使用参数启动 pytest fixture
initing a pytest fixture with a parameter
我有一个 fixture 可以创建我在许多测试中使用的对象。
此对象有一个 属性 - priority
(1 - 10)
现在有很多测试需要"know"对象的优先级(为了测试各种逻辑路径)
所以我可以有 10 个不同的灯具:
@pytest.fixture
def object_priority_1():
return MyObj(priority=1)
@pytest.fixture
def object_priority_2():
return MyObj(priority=2)
//....
@pytest.fixture
def object_priority_10():
return MyObj(priority=10)
但它似乎不对...我敢肯定有一种方法可以每次都将外部参数传递给固定装置 - 我只是找不到它
编辑:
澄清一下——我会想要以下领域的东西:
@pytest.fixture
def my_object(<priority as an external param>):
return MyObj(priority)
然后测试将是这样的:
def test_foo(my_object(1), my_object(6)):
//...
你可以这样做:
@pytest.fixture
def my_object(priority):
return MyObj(priority)
def test_foo(my_object):
obj_1 = my_object(1)
assert something # 1
obj_2 = my_object(2)
assert something # 2
我有这个想法,然后我发现了这个问答:
py.test: Pass a parameter to a fixture function
如果您的问题得到解决,我认为您的问题可能被认为是重复的。
你可以这样做,它会 return 运行 你的 fixture 和每个参数:
@pytest.fixture(
params=[
"param1",
"param2",
"param3",
"param4",
"param5",
"param6",
]
)
def fixture_with_params(request):
return request.param
我有一个 fixture 可以创建我在许多测试中使用的对象。
此对象有一个 属性 - priority
(1 - 10)
现在有很多测试需要"know"对象的优先级(为了测试各种逻辑路径)
所以我可以有 10 个不同的灯具:
@pytest.fixture
def object_priority_1():
return MyObj(priority=1)
@pytest.fixture
def object_priority_2():
return MyObj(priority=2)
//....
@pytest.fixture
def object_priority_10():
return MyObj(priority=10)
但它似乎不对...我敢肯定有一种方法可以每次都将外部参数传递给固定装置 - 我只是找不到它
编辑: 澄清一下——我会想要以下领域的东西:
@pytest.fixture
def my_object(<priority as an external param>):
return MyObj(priority)
然后测试将是这样的:
def test_foo(my_object(1), my_object(6)):
//...
你可以这样做:
@pytest.fixture
def my_object(priority):
return MyObj(priority)
def test_foo(my_object):
obj_1 = my_object(1)
assert something # 1
obj_2 = my_object(2)
assert something # 2
我有这个想法,然后我发现了这个问答:
py.test: Pass a parameter to a fixture function
如果您的问题得到解决,我认为您的问题可能被认为是重复的。
你可以这样做,它会 return 运行 你的 fixture 和每个参数:
@pytest.fixture(
params=[
"param1",
"param2",
"param3",
"param4",
"param5",
"param6",
]
)
def fixture_with_params(request):
return request.param