我有一个fixture来创建一个我在很多测试中使用的对象。
此对象具有属性-priority(1-10)
现在,有很多测试需要“知道”对象的优先级(以便测试各种逻辑路径)
所以我可以有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)

但它似乎关闭了。。。我确信每次都有一种方法可以将一个外部参数传递到一个fixture-我只是找不到它
编辑:
为了澄清-我想要的是:
@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
如果你的问题解决了,我想你的问题可以考虑重复一次。

关于python - 使用参数初始化pytest固定装置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32275347/

10-09 05:35