前言
- 本篇来学习pytest中使用Hook函数–pytest_generate_tests实现参数化
pytest_generate_tests
- 在 conftest.py 自定义参数化的钩子, 判断当测试用例传了 param 参数,就让它生成参数化的用例
conftest.py
def pytest_generate_tests(metafunc):
""" generate (multiple) parametrized calls to a test function."""
if "param" in metafunc.fixturenames:
metafunc.parametrize("param",
metafunc.module.test_data,
ids=metafunc.module.names,
scope="function")
编写case
import os
import requests
names = ["get 1", "get 2"]
test_data = [{
"url": "https://postman-echo.com/get",
"method": "GET",
"headers":
{
"Content-Type": "application/json"
},
"json":
{
"username": "test1",
"password": "123456"
}
},
{
"url": "https://postman-echo.com/get",
"method": "GET",
"headers":
{
"Content-Type": "application/json"
},
"json":
{
"username": "test2",
"password": "123456"
}
}
]
def test_get_request(param):
"""测试get请求"""
r = requests.session().request(**param)
print('\nrsp', r.text)
user_name = r.json().get('args').get('username')
print('user_name', user_name)
assert 'test' in user_name
if __name__ == '__main__':
os.system('pytest -s -v test_71.py')