pytest参数化和执行

参数化有两种 1、使用pytest.fixture 1、使用pytest.fixture标记数据

#定义数据,数据必须是列表 undata = https://www.it610.com/article/[{"username":"xue111","password":'123456'},{"username":"xue222","password":'234567'},{"username":"xue333","password":'345678'},{"username":"xue444","password":'456789'}]def id(fixture_vaule): t = fixture_vaule return "username,password{0}".format(t)#fixture标记函数 undata 表示需要标记的数据列表 @pytest.fixture(params=undata,ids=id) def username(request): return request.param

2、根据标记方法名调用参数
#username,表示使用哪个fixture标记的函数 def test_sign_up(self,username):url = "http://192.168.3.7:8080/admin/register" body = { "email": "593971579@qq.com", "icon": "", "nickName": "", "note": "", "password": username["password"], "username": username["username"] }r = requests.post(url = url, json=body) print(r.request.body) assert True == r.text.__contains__("200")

3、执行并验证

pytest参数化和执行
文章图片
image.png 使用pytest.mark.parametrize
@pytest.mark.parametrize('username,password',[('admin','123456'),('wwwwww','123456'),('eeeeee','123456')]) def test_sign_up_2(self, username,password): url = "http://192.168.3.7:8080/admin/register" body = { "email": "593971579@qq.com", "icon": "", "nickName": "", "note": "", "password": "123456", "username": "xue000" } body["username"] = username body["password"] = password r = requests.post(url=url, json=body) print(r.request.body) print(r.text) print(r.json()["data"]) assert r.json()["data"] == None

用例执行 pytest -v 执行整个项目中的测试用例,并显示详细信息
pytest -v 路径 【pytest参数化和执行】执行某个包下边的测试用例
pytest -v 文件路径 执行某个测试文件中的测试用例
pytest -v 文件路径::测试类 执行某个测试类中的测试用例
pytest -v 文件路径::测试类::测试方法 执行某个测试用例
使用pytest.mark标记测试用例并执行 1、使用pytest.mark打标记
pytest参数化和执行
文章图片
image.png 2、执行
pytest参数化和执行
文章图片
image.png 3、执行多个标记
pytest参数化和执行
文章图片
image.png

    推荐阅读