使用参数启动pytest fixture

时间:2015-08-28 16:07:29

标签: python pytest

我有一个夹具,用于创建我在许多测试中使用的对象 此对象具有属性 - 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)

但似乎有点......我确信每次都有一种方法可以为固定装置提供外部参数 - 我无法找到它

修改 澄清 - 我本来想要的东西:

@pytest.fixture
    def my_object(<priority as an external param>):
        return MyObj(priority)

然后测试将是这样的:

def test_foo(my_object(1), my_object(6)):
//...

1 个答案:

答案 0 :(得分:3)

你可以这样做:

@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

我接受了这个想法,然后我找到了这个Q&amp; A:

py.test: Pass a parameter to a fixture function

我认为如果您的问题得到解决,您的问题可能会重复。