测试过程中需要大量的测试数据,如果每条测试数据都编写一条测试用例,用例数量将是非常庞大的,一般我们在测试过程中会将测试用到的数据以参数的形式传入到测试用例中,并为每条测试数据生成一个测试结果数据。这时候可以使用fixture的参数化功能,在fixture方法加上装饰器@pytest.fixture(params=[1,2,3),就会传入三个数据1,2,3分别将者三个数据传入到用例中。这里的数据可以是列表。传入的数据需要使用一个固定的参数名request来接收。
import pytest
@pytest.fixture(params=[1,2,3])
def data(request):
return request.param
def test_not_2(data):
print(f"测试数据:{data}")
assert data < 5
对于params里面的值,fixture都会去调用一次,使用request.param来接收用例参数化的数据,并且为每一个测试数据生成一个测试结果。在测试过程中使用这种参数化的方式,会减少大量的代码量。