简介
pytest 还支持参数化 fixture,即可以为一个 fixture 提供多个不同的值,让多个测试用例使用不同的测试数据。这样可以有效减少重复代码,尤其适合测试多组输入输出的情况。
基本语法
-
params:传入一个列表,包含 Fixture 的不同参数。 -
request.param:可以在 Fixture 函数中通过 request.param 获取当前参数。pythonimport pytest @pytest.fixture(params=[param1, param2, param3, ...]) def fixture_name(request): return request.param
单参数
-
代码示例
pythonimport pytest @pytest.fixture(params=[1, 2, 3]) def number(request): yield request.param # return request.param # 效果一致,同时存在只生效一个 def test_number(number): assert number > 0- 运行结果

- 运行结果
多参数
-
代码示例
pythonimport pytest @pytest.fixture(params=[ ["user", 123], ["appli", 123456] ]) def login(request): print(f"用户名:{request.param}") yield request.param def test_demo(login): print(f"demo case: 数据为: {login}")- 运行结果

- 运行结果