Pytest系列(4)- 参数化parametrize的用法
什么是参数化
将测试数据组织起来,用不同的测试数据调用相同的测试方法,通常跟数据驱动配合使用
参数化的作用
一般来说,参数化的实际引用场景:
比如搜索功能,在做UI自动化的时候
-
需要输入中文、英文、数字、特殊字符等等来进行查询
-
以上这些用例,区别就在于输入的数据以及对应的交互情况,调用的都是同一个测试方法
-
可以把输入和期望的结果进行参数化,以此节省代码量
参数化的方法
用例前加上装饰函数 @pytest.mark.parametrize()即可
@pytest.mark.parametrize('a,b,c',[[1,1,2],[100,200,300]])
def test2(a,b,c):
assert c == a+b
运行结果如下:

可以看见,成功的生成了两条测试用例
🍍ATTENTION:
-
要将变化的数据提取出来,作为参数传递进去
-
参数字符串之间"arg1,arg2,arg3..."需要用逗号分隔
-
多个参数,需要用字符串或者元组
ids的使用
parametrize中ids参数可以标识测试用例,增加可读性
举个栗子
@pytest.mark.parametrize('a,b,c',((1,1,2),[100,200,300]),ids=['int1','int2'])
def test2(a,b,c):
assert c == a+b
运行结果中可以看见,用例前显示了我们自定义的ids

🍍ATTENTION:
- ids的长度必须与测试数据列表的长度一致(有多少组测试数据就需要有多少个ids)
- 可以理解为用例的id
多个装饰器
多个参数,按照笛卡尔积组合测试数据
举栗👇👇👇
@pytest.mark.parametrize('a',[1,2,3])
@pytest.mark.parametrize('b',[4,5,6])
def test3(a,b):
print(f'测试数据为:{a},{b}')
运行结果如下


浙公网安备 33010602011771号