在测试中将参数传递给Pytest固定装置中的Patch

时间:2019-05-07 11:36:52

标签: python pytest

这是我的灯具,它返回Foo对象。我修补Foo的内部配置变量,然后使用参数实例化该类。

@pytest.fixture()
def foo_fix():
    patch(Foo.config, "hello"):
    def wrapper(parameter):
        return Foo(parameter=parameter)
    yield wrapper

在我的测试中,我这样做:

def test_foo_1(foo_fix):
    foo = foo_fix(parameter=1)
    assert foo.go() == "abc"

我想从测试函数内部更改Foo.config值。我尝试将foo_fix嵌套在另一个函数中,但无法正常工作。

有没有一种干净的方法?

1 个答案:

答案 0 :(得分:0)

这应该有效:

@pytest.fixture
def foo_fix():
    def wrapper(parameter, config):
        patch(Foo.config, "hello"):
        return Foo(parameter=parameter)
    yield wrapper


def test_foo_1(foo_fix):
    foo = foo_fix(parameter=1, config="xyz")
    assert foo.go() == "abc"