pytest参数化有三种方式:
- @pytest.fixture可以进行参数化
@pytest.mark.parametrize
允许在测试函数或类上定义多组参数和 fixture。pytest_generate_tests钩子函数可以
定义自定义的参数化方案或扩展。
@pytest.fixture
pytest.fixture有个params参数,可以进行参数化
import pytest
@pytest.fixture(params=[1, 2, 3])
#@pytest.fixture(params=[1, 2, 3], ids=['id1', 'id2', 'id3']) 可以使用ids参数为每个生成的测试用例指定一个自定义的 ID
def example_fixture(request):
return request.param * 2
def test_example(example_fixture):
assert example_fixture > 0
@pytest.mark.parametrize
@pytest.mark.parametrize("a, b", [(1, 1), (2, 2), (3, 3)])
def test_qe(a, b):
assert a == b
如果想多个参数化参数的所有组合,可以使用多个parametrize
装饰器:
@pytest.mark.p