【pytest】参数化parametrize
- 前言:
- 软件测试中,输入相应值,检查期望值,是常见测试方法。
- 在自动化测试中,一个测试用例对应一个测试点,通常一组测试数据无法完全覆盖测试范围,所以,需要参数化来传递多组数据。
- pytest的测试用例参数化使用如下装饰器即可完成
@pytest.mark.parametrize(argnames, argvalues)
# 参数:
# argnames:以逗号分隔的字符串
# argvaluse: 参数值列表,若有多个参数,一组参数以元组形式存在
-
一个参数多个值
-
多个参数多个值
-
多个参数的混合使用,笛卡尔积
-
实际使用场景
import pytest,requests
test_data = [
("M", {"message": "update some data!", "code": 0}),
("F", {"message": "update some data!", "code": 0}),]
@pytest.mark.parametrize("test_input, expect", test_data)
def test_updata_info_32(login_fix, test_input, expect):
'''修改个人信息'''
url = "http://xxxxxx:9000/api/v1/userinfo"
body = {"name": "test","sex": test_input, "age": 20,"mail": "xxxxxx@qq.com"}
r = requests.post(url, json=body)
print(r.text)
assert r.json()["message"] == expect["message"]
assert r.json()["code"] == expect["code"]