pytest中fixture(indirect)
时间: 2024-04-10 15:27:19 浏览: 9
fixture(indirect) 是 pytest 中的一个装饰器,用于测试函数中的参数间接传递。它允许将一个 fixture 的返回值作为另一个 fixture 的参数,并在测试函数中使用间接传递的值。
举个例子,假设有以下两个 fixture 函数:
```python
import pytest
@pytest.fixture
def username():
return "test_user"
@pytest.fixture
def login(username):
# 在这个例子中,login fixture 的参数 username 是由 username fixture 的返回值提供
return f"Logged in as {username}"
```
然后,我们可以在测试函数中使用这两个 fixture:
```python
def test_login(login):
assert login == "Logged in as test_user"
```
在这个例子中,`test_login` 函数接收 `login` fixture 作为参数。由于 `login` fixture 的参数 `username` 使用了 `username` fixture 的返回值,所以 `login` fixture 最终返回的值是 "Logged in as test_user"。因此,测试函数断言 `login` 的值是否等于预期结果。
通过使用 `@pytest.mark.parametrize` 装饰器,我们还可以在测试函数中使用多个 fixture 和参数间接传递。
希望以上解答能够帮到你!如果你还有其他问题,请继续提问。