参数化有两种
1、使用pytest.fixture
1、使用pytest.fixture标记数据
#定义数据,数据必须是列表
undata = [{"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.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 -v 文件路径
执行某个测试文件中的测试用例
pytest -v 文件路径::测试类
执行某个测试类中的测试用例
pytest -v 文件路径::测试类::测试方法
执行某个测试用例