如果有一批测试用例,具有相同的测试步骤
,只是测试参数数据不同
。那么自动化测试时,就可以使用pytest.mark.parametrize()传入测试函数,测试时会循环执行这些测试数据,使用参数化好处是把测试数据从用例代码中分离
开来,以后增加新的测试用例,只需要修改数据就行。
使用方法:
@pytest.mark.parametrize(argnames, argvalues)
argnames:参数化变量名,字符串,多个参数中间用逗号隔开,参数化变量名要与操作的函数的形参一样。
argvalues:list,多组数据用元组类型。里面装的是参数化的值(也就是测试数据),与操作函数的形参对应。
说白了:@pytest.mark.parametrize(argnames, argvalues)相当于调用函数传递实参,第一个参数是定位函数的形参,第二个参数是传入实参,实参用列表来装。
举个例子:使用参数化@pytest.mark.parametrize计算两个数之间的和,并断言计算的值是否正确
import pytest
@pytest.mark.parametrize('a,b,result', [
(1,2,3),
(4,5,9)])
def test_add(a, b,result):
assert a+b==result
测试结果: 运行成功
test_autotest1.py::test_add[1-2-3] PASSED [ 50%]
test_autotest1.py::test_add[4-5-9] PASSED [100%]
注意上面说的:参数化变量名'a,b,result'与要传入参数的函数test_add(a, b, result)的形参一样。