pytest 的 fixture 如何实现参数传递
时间: 2024-02-03 16:15:43 浏览: 157
在 pytest 中,fixture 可以通过参数化来实现参数传递。具体来说,可以使用 `pytest.fixture` 装饰器中的 `@pytest.fixture(params=[])` 来定义一个带参数的 fixture,其中 `params` 参数可以接收一个列表,列表中的每个元素都会被作为参数传递给 fixture,使得 fixture 可以根据不同的参数返回不同的结果。
例如,下面的代码定义了一个带参数的 fixture `my_fixture`,它接收一个字符串参数,并根据参数返回不同的值:
```python
import pytest
@pytest.fixture(params=['foo', 'bar'])
def my_fixture(request):
if request.param == 'foo':
return 123
elif request.param == 'bar':
return 456
```
在测试函数中使用该 fixture 时,可以通过在函数签名中声明参数来接收 fixture 的返回值,例如:
```python
def test_my_test(my_fixture):
assert my_fixture == 123 or my_fixture == 456
```
这样,当执行 `test_my_test` 测试函数时,pytest 会自动调用 `my_fixture` fixture,并根据定义的参数 `['foo', 'bar']` 分别传递 `'foo'` 和 `'bar'` 两个参数,使得 `my_fixture` 返回值分别为 `123` 和 `456`,从而测试函数可以对返回值进行断言。
阅读全文