Pytest中装饰器@pytest.mark.parametrize('参数名',list)可以实现测试用例参数化,类似DDT
示例代码如下:
# 一个参数一个值
@pytest.mark.parametrize("input", ["输入值"])
def test_case1(input):
print("\n" + input)
assert input == "输入值"
运行结果如下图:
示例代码如下:
@pytest.mark.parametrize("input", ["输入值1", "输入值2", "输入值3", "输入值4", "输入值5"])
def test_case2(input):
print("\n" + input)
assert '输入值' in input
运行结果如下:
示例代码如下:
@pytest.mark.parametrize("userName","passWord",[("xiaoqiang","123456"),("rose","123456")("jone","123456")("Alex","123456")])
def test_login(userName,password):
print(userName+" : "+password)
assert userName =='rose'
运行结果如下:
有点类似笛卡尔积的意思,示例代码如下:
data1 = [1, 2]
data2 = ["python", "java"]
data3 = ["软", "件", "测", "试", "君"]
@pytest.mark.parametrize("a", data1)
@pytest.mark.parametrize("b", data2)
@pytest.mark.parametrize("c", data3)
def test_case3(a, b, c):
print(f"生成新的数据组合为:[{a} {b} {c}]")
运行结果如下:
示例代码如下:
json=({"username":"alex","password":"123456"},{"username":"rongrong","password":"123456"})
@pytest.mark.parametrize('json', json)
def test_parametrize_1(json):
print(f'字典为\n{json}')
print(f'username : {json["username"]}, password : {json["password"]}')
运行结果如下:
示例代码如下:
@pytest.mark.parametrize("user,pwd",
[("xiaoqiang", "123456"), ("rose", "123456"),
pytest.param("jone", "123456", marks=pytest.mark.xfail),
pytest.param("Alex", "123456", marks=pytest.mark.skip)])
def test_login(user, pwd):
print(user + " : " + pwd)
assert user == "rose"
运行结果如下: