pytest数据驱动(最简单)

第一种:通过yaml文件获取数据(一维列表)

data.yaml文件内容如下:

- '软件测试'
- '单元测试'
- '自动化测试'
- '性能测试'
- '测试开发'
- '测试架构师'

测试用例内容如下:

@pytest.mark.parametrize('data',  yaml.load(open('data.yml', 'r')))
def test_ddt(data):

  url='https://www.baidu.com/search/query?key='
  header = {'Accept': "application/json",
      'Content-Type': "application/json; charset=utf-8",
      'Accept-Encoding': "gzip, deflate, br"}

  res=requests.get(url+data, header)
  assert res.status_code==200

第二种:通过yaml文件获取数据(二维列表)

data.yaml文件内容如下:

#用例1
-
api_name: page_title
url: http://www.baidu.com/
header = {'Accept': "application/json",
     'Content-Type': "application/json; charset=utf-8",
     'Accept-Encoding': "gzip, deflate, br"}
data: {
"status_code": 200
}

#用例2
-
api_name: searching
url: http://www.baidu.com/
header = {'Accept': "application/json",
     'Content-Type': "application/json; charset=utf-8",
     'Accept-Encoding': "gzip, deflate, br"}
data: {
"status_code": 200
}

#用例3
-
api_name: login
url: http://www.baidu.com/
header = {'Accept': "application/json",
     'Content-Type': "application/json; charset=utf-8",
     'Accept-Encoding': "gzip, deflate, br"}
data: {
"status_code": 200
}

测试用例内容如下:

@pytest.mark.parametrize('data', yaml.load(open('data.yml', 'r')))
def test_ddt(data):
       api_name = data['api_name']
  url=data['url']
  header = data['header']

  res=requests.get(url + api_name, header)
  assert   res.status_code ==data['data']['status_code']

第三种:通过yaml文件获取数据(@pytest.fixture)

@pytest.fixture()
def login(request):
  name = request.param
  print(f"== 账号是:{name} ==")
  return name

data = ["pyy1", "polo"]

@pytest.mark.parametrize("login", data, indirect=True)
def test_name(login):
  print(f" 测试用例的登录账号是:{login} ")

@pytest.fixture()
def logins(request):
  param = request.param
  print(f"账号是:{param['username']},密码是:{param['pwd']}")
  return param

data = [ {"username": "name1", "pwd": "pwd1"},  {"username": "name2", "pwd": "pwd2"} ]

@pytest.mark.parametrize("logins", data, indirect=True)
def test_name_pwd(logins):
  print(f"账号是:{logins['username']},密码是:{logins['pwd']}")

# 多个fixture
@pytest.fixture(scope="module")
def input_user(request):
  user = request.param
  print("登录账户:%s" % user)
  return user

@pytest.fixture(scope="module")
def input_psw(request):
  psw = request.param
  print("登录密码:%s" % psw)
  return psw

data = [("name1", "pwd1"),  ("name2", "pwd2")]

@pytest.mark.parametrize("input_user,input_psw", data, indirect=True)
def test_more_fixture(input_user, input_psw):
  print("fixture返回的内容:", input_user, input_psw)

name = ["name1", "name2"]
pwd = ["pwd1", "pwd2"]

@pytest.mark.parametrize("input_user", name, indirect=True)
@pytest.mark.parametrize("input_psw", pwd, indirect=True)
def test_more_fixture(input_user, input_psw):
  print("fixture返回的内容:", input_user, input_psw)

pytest数据驱动(最简单)的更多相关文章

  1. python+request+pymysql+pytest数据驱动

    一.pymysql简单使用 1.安装mysql 下载地址:https://www.mysql.com/,安装教程这里不做介绍了,网上一大推. 2.安装pymysql库 在Terminal终端输入:pi ...

  2. Web自动化框架搭建之二基于数据驱动应用简单实例~~

    整体框架,先划分成细小功能模块~~,从最简单的开始,介绍 实现循环百度搜索实例: #coding=utf-8 '''Created on 2014��6��9�� @author: 小鱼'''impo ...

  3. python:单元测试框架pytest的一个简单例子

    之前一般做自动化测试用的是unitest框架,发现pytest同样不错,写一个例子感受一下 test_sample.py import cx_Oracle import config from sen ...

  4. python的数据驱动

    什么叫数据驱动? 登录用例 ->不用的用户名登录,但是自动化化脚本一样,虽然脚本相同,步骤相同,但是不同的用户名登录得出的数据是不一样的,于是就有了数据驱动,就是数据的改变驱动自动化测试的执行导 ...

  5. 『德不孤』Pytest框架 — 1、Pytest测试框架介绍

    目录 1.什么是单元测试框架 2.单元测试框架主要做什么 3.单元测试框架和自动化测试框架有什么关系 4.Pytest测试框架说明 5.Pytest框架和Unittest框架区别 (1)Unittes ...

  6. Python自动化测试框架——数据驱动(从代码中读取)

    今天小编要介绍的是数据驱动最简单和最常用的一种方法,由于只是介绍方法,代码操作后的美观程度略有缺陷,介意者可以自行改动 还是以163邮箱登录为例: 设计一个存放数据的类,这个类的参数是我们需要修改的数 ...

  7. Pytest 使用简介

    前言 最近在听极客时间的课程,里面的讲师极力推崇 pytest 框架,鄙视 unittest 框架,哈哈!然后查了些资料,发现了一条 python 鄙视链:pytest 鄙视 > unittes ...

  8. Pytest 测试框架

    一 . Pytest 简介 Pytest是python的一种单元测试框架. 1. pytest 特点 入门简单,文档丰富 支持单元测试,功能测试 支持参数化,重复执行,部分执行,测试跳过 兼容其他测试 ...

  9. selenium3 web自动化测试框架 五: 数据驱动简介及基础使用

    1.数据驱动概述 相同的测试脚本使用不同的测试数据来执行,测试数据和测试行为完全分离,这样的测试脚本设计模式称为数据驱动.简单的理解为数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变.通过使 ...

  10. Pytest学习笔记(一) 环境安装及入门

    简介 pytest是python的一个单元测试框架,类似于unittest,相对unittest来说,pytest使用更简单,功能更强大. 安装 pip3 install -U pytest 查看版本 ...

随机推荐

  1. vsftp配置使用

    vsftp简介: VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,它的全称是Very Secure FTP 从此名称可以看出来,编制者的初衷是代码的安全. 安全性是编写VSFT ...

  2. vim 多文件编辑

    使用vim打开多个文件 vim可以同时打开好几个文件同时进行编辑 [root@localhost opt]# vim ip.txt time.txt 2 files to edit ens32: fl ...

  3. Excel相关技巧

    (1)如何实现EXCEL某个单元格满足条件整行变色? 链接:https://jingyan.baidu.com/article/75ab0bcba47c19d6864db2cf.html (2)获取表 ...

  4. Web 网页性能及性能优化

    Web 网页性能及性能优化 一.Web 性能 Web 性能是 Web 开发的一个重要方面,侧重于网页加载速度以及对用户输入的响应速度 通过优化网站来改善性能,可以在为用户提供更好的体验 网页性能既广泛 ...

  5. jquery浏览器的上卷高度 节点的创建和写入 节点的删除

    // js 的兼容语法         // let scrollT = document.documentElement.scrollTop || document.body.scrollTop; ...

  6. Visual Studio 2022 community 社区版本离线安装

    下载好 vs_community__115739266.1625310894.exe 的,重命名为:vs_community2022.exe 命令: E:\vs_community2022.exe - ...

  7. ssh练习

    根据要求完成部署 根据如下要求,完成部署过程 1.恢复7.8.9.31.41所有机器的快照 7 8 9 web服务 nginx ​ 172.16.1.xx ​ ​ nfs-31 提供共享文件存储 ​ ...

  8. (六)基于Scrapy爬取网易新闻中的新闻数据

    需求:爬取这国内.国际.军事.航空.无人机模块下的新闻信息 1.找到这五个板块对应的url  2.进入每个模块请求新闻信息 我们可以明显发现''加载中'',因此我们判断新闻数据是动态加载出来的. 3. ...

  9. Css var 的基础使用

    Css var 语法 var(custom-property-name, value) - custom-property-name 必须 变量必须以 --开头 后面可以是英文.数字连接符,区分大小写 ...

  10. kettle从入门到精通 第七十课 ETL之kettle kettle数据校验,脏数据清洗轻松拿捏

    场景:输入在指定的错误(错误应涵盖数据类型不匹配的情况)行数内,trans不报错,但通过错误处理步骤捕捉,并记入文件,整个数据管线正常完成直至处理完最后一个输入行. 解决方案:使用步骤[数据检验]进行 ...