【发布时间】:2021-06-21 13:00:28
【问题描述】:
我有(在 pytest 中):
-
base使用request.param的夹具 -
使用
base夹具的intermediary夹具 - 使用
intermediary夹具的测试,我想parameterizebase夹具
下面的代码示例将有助于解释:
import pytest
@pytest.fixture
def base(request) -> int:
return request.param
@pytest.fixture
def intermediary(base: int) -> int:
return base
# This does not work! "In test_something: indirect fixture 'base' doesn't exist"
@pytest.mark.parametrize("intermediary", [1], indirect=["base"])
def test_something(intermediary: int) -> None:
assert isinstance(intermediary, int)
我的问题:如何从仅使用 intermediary 夹具的测试中填充 request 的 base 夹具?
解决方法
在测试签名作品中包含基本夹具:
@pytest.mark.parametrize("base", [1], indirect=True)
def test_something_workaround(base: int, intermediary: int) -> None:
assert isinstance(intermediary, int)
但是,这对我来说是不可取的,因为测试实际上并没有使用base,而只使用了intermediary。
版本
Python==3.8
pytest==6.2.2
【问题讨论】: