pytest数据驱动(最简单)

目录

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

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

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

资料获取方法


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

data.yaml文件内容如下:

  • '软件测试'

  • '单元测试'

  • '自动化测试'

  • '性能测试'

  • '测试开发'

  • '测试架构师'

测试用例内容如下:

python 复制代码
@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文件内容如下:

python 复制代码
#用例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
}
python 复制代码
#用例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
}
python 复制代码
#用例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
}

测试用例内容如下:

python 复制代码
@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)

python 复制代码
@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} ")
python 复制代码
@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']}")
python 复制代码
# 多个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)

资料获取方法

【留言777】

各位想获取源码等教程资料的朋友请 点赞 + 评论 + 收藏 ,三连!

三连之后我会在评论区挨个私信发给你们~

相关推荐
程序猿000001号1 小时前
探索Python的pytest库:简化单元测试的艺术
python·单元测试·pytest
GPT01236 小时前
大模型日报 2024-12-20
程序人生
测试者家园6 小时前
ChatGPT生成接口文档的方法与实践
软件测试·chatgpt·测试用例·接口测试·接口文档·ai赋能·用chatgpt做软件测试
Heaven6458 小时前
6.8 Newman自动化运行Postman测试集
软件测试·自动化·接口测试·postman·newman
十二测试录10 小时前
Python基础——字符串
开发语言·经验分享·python·程序人生·职场发展
测试老哥13 小时前
Python自动化测试图片比对算法
自动化测试·软件测试·python·测试工具·程序人生·职场和发展·测试用例
测试者家园20 小时前
ChatGPT接口测试用例生成的流程
软件测试·chatgpt·测试用例·接口测试·测试图书·质量效能·用chatgpt做测试
互联网杂货铺1 天前
几个常见的Jmeter压测问题
自动化测试·软件测试·测试工具·jmeter·职场和发展·测试用例·压力测试
测试者家园1 天前
ChatGPT与接口测试工具的协作
软件测试·测试工具·chatgpt·接口测试·ai赋能·用chatgpt做软件测试·测试图书
爱学测试的雨果1 天前
分布式测试插件 pytest-xdist 使用详解
分布式·pytest