Передача аргумента в Patch внутри прибора Pytest из теста - PullRequest
0 голосов
/ 07 мая 2019

Это мой прибор, который возвращает объект 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 голосов
/ 08 мая 2019

Это должно работать:

@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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...