使用参数初始化 pytest 夹具

Boa*_*oaz 3 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)
Run Code Online (Sandbox Code Playgroud)

但它似乎关闭...我确信有一种方法可以每次向固定装置传递外部参数 - 我只是找不到它

编辑: 澄清一下 - 我想要以下领域的东西:

@pytest.fixture
    def my_object(<priority as an external param>):
        return MyObj(priority)
Run Code Online (Sandbox Code Playgroud)

然后测试会是这样的:

def test_foo(my_object(1), my_object(6)):
//...
Run Code Online (Sandbox Code Playgroud)

Ric*_*ard 5

你可以做 :

@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
Run Code Online (Sandbox Code Playgroud)

我有这个想法,然后我发现了这个问答:

py.test:将参数传递给固定功能

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