我有一个函数可以生成一个字典,我想在测试用例的参数化中使用它。但是,该函数需要一个固定装置(链接到一个类)来获取一些数据。当直接在参数化中调用此函数并将夹具用作参数时,会生成错误 -
'function' object is not iterable
。
def myFunction(fixtureToUse):
res = fixtureToUse.class_function()
# Use res to generate my dicitonary
return myDict
@pytest.mark.parametrize('keyVal', myFunction(fixtureToUse))
def testMyTestCase(fixtureToUse, keyVal)
# Execute testcase logic
我尝试了一些事情,例如:
usefixtures()
但这不起作用,因为它创建了一个不同的错误,其中我的函数中的命令无法解析引用。你可以使用
request.getfixturevalue()
:
import pytest
@pytest.fixture
def fix1():
return 1
@pytest.fixture
def fix2():
return 2
def make_dict(fx):
return {"a": fx}
@pytest.mark.parametrize("fixture_name", ["fix1", "fix2"])
def test_a(request, fixture_name):
some_fixture_value = make_dict(request.getfixturevalue(fixture_name))
print(some_fixture_value)