gpt4 book ai didi

python - 如何将 fixture 作为参数传递给另一个 fixture

转载 作者:行者123 更新时间:2023-12-04 16:46:06 27 4
gpt4 key购买 nike

我要传一个pytest.fixture函数到另一个 fixture 函数的 param 参数。像这样的东西:

@pytest.fixture()
def foo():
return "foo"

@pytest.fixture()
def boo(foo):
return foo + "boo"

@pytest.fixture()
def bar(foo):
return foo + "bar"

@pytest.fixture(params=[boo, bar], ids=["boo_fixture", "bar_fixture"])
def final_fixture(request):
return request.param

def _test(final_fixture):
assert final_fixture.startswith('foo')
request.paramfinal_fixture返回该参数的函数对象,而不是装置的返回值( boobar )
<function boo at 0x7f2bfceg41f0>
<function bar at 0x7f2bfceg41f1>
那么,我该如何制作 final_fixture函数返回每个 fixture 的实际返回值 param ?

最佳答案

感谢 this,我找到了一个对我有用的解决方案威尔回答。
好像你可以用 request.getfixturevalue获取 fixture 的返回值而不是函数对象。这是用于此的工作代码:

@pytest.fixture()
def foo():
return "foo"

@pytest.fixture()
def boo(foo):
return foo + "boo"

@pytest.fixture()
def bar(foo):
return foo + "bar"

@pytest.fixture(params=['boo', 'bar'], ids=["boo_fixture", "bar_fixture"])
def final_fixture(request):
return request.getfixturevalue(request.param)

def _test(final_fixture):
assert final_fixture.startswith('foo')
这是相关文档: http://doc.pytest.org/en/latest/builtin.html#_pytest.fixtures.FixtureRequest.getfixturevalue

关于python - 如何将 fixture 作为参数传递给另一个 fixture ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67375866/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com