pytest参数化
pytest有三种传参方式,我主要用到前两种
pytest的参数化方式
-
pytest.fixture()方式进行参数化,fixture装饰的函数可以作为参数传入其他函数
-
pytest.mark.parametrize()方式进行参数化
-
conftest.py 文件中存放参数化函数,可作用于模块内的所有测试用例
本章主要讲第二种方式:@pytest.mark.parametrize('参数名',list) 进行参数化
1. 传一个参数 @pytest.mark.parametrize('参数名',list) 进行参数化
2. 传两个参数@pytest.mark.parametrize('参数名1,参数名2',[(参数1_data[0], 参数2_data[0]),(参数1_data[1], 参数2_data[1])]) 进行参数化, 传三个或更多参数也是这样传。list的每个元素都是一个元组,元组里的每个元素和按参数顺序一一对应
从网上找了个例子,讲的很清楚,在这里借用下:
pytest.mark.parametrize()方式进行参数化
-
采用标记函数参数化,传入单个参数,pytest.mark.parametrize("参数名",lists)
mark.png
-
采用标记函数传入多个参数,如pytest.mark.parametrize("para1, para2", [(p1_data_0, p2_data_0), (p1_data_1, p2_data_1),...]
-
测试用例中传入2个参数,year和期望结果,使输入数据与预期结果对应,构造了2组会失败的数据,在执行结果中,可以看到失败原因:
image.png