【发布时间】:2021-12-28 16:32:07
【问题描述】:
我有一个可参数化的夹具,效果很好。以下函数是具有相同行为的虚拟函数。
@pytest.fixture(scope="function")
def parametrizable_fixture(parameters):
return parameters
这适用于大多数测试,如下所示:
@pytest.mark.parametrize("parameters", [["param 1", "param 2"]])
def test_dummy(parametrizable_fixture):
assert parametrizable_fixture == ["param 1", "param 2"]
但是,如果我想将另一个夹具(定义如下)作为第一个夹具的参数,则测试失败:
@pytest.fixture(scope="function")
def param2fixture():
return "param 2"
@pytest.mark.parametrize("parameters", [["param 1", pytest.lazy_fixture("param2fixture")]])
def test_dummy_2(parametrizable_fixture):
assert parametrizable_fixture == ["param 1", "param 2"]
惰性夹具没有被它应该具有的值替换,即我收到以下错误消息:
E assert ['param 1', <LazyFixture "param2fixture">] == ["param 1", "param 2"]
编辑: 这些示例使用夹具作为长度为 2 的列表中的参数。这只是为了简化问题。此类惰性夹具作为参数的数量或位置没有限制。
【问题讨论】:
标签: python-3.x pytest fixtures