Как pytest справляется с приборами, вызывающими другие приборы? - PullRequest
0 голосов
/ 01 июля 2018

У меня есть два приспособления pytest, client и app. client звонки app.

Тестовая функция test_register имеет аргументы client и app и, следовательно, вызывает оба прибора.

Мой вопрос заключается в том, всегда ли экземпляр app, используемый в test_register, будет тем, который вызывал client, и если так обычно работает pytest (утверждение в test_register проходит, поэтому оно верно в этот случай) .

Другими словами, генерирует ли pytest несвязанные экземпляры для каждого аргумента в тестовой функции, которая вызывает фиксатор, или она вызывает фиксаторы, и возвращенные экземпляры также ссылаются друг на друга?

Вот код:

@pytest.fixture
def app():
    app = create_app({
        'TESTING': True,
    })

    yield app


@pytest.fixture
def client(app):
    return app.test_client()



def test_register(client, app):
    assert client.application is app

1 Ответ

0 голосов
/ 04 июля 2018

Все приборы имеют область действия, неявная область действия function, но есть также области действия class, module и session. Внутри каждой области будет когда-либо только один экземпляр, созданный из прибора.

Итак, в вашем примере app и client используют область действия. При выполнении test_register он входит в область действия этого теста и создает экземпляры прибора. Следовательно, и test_register, и client получают один и тот же экземпляр app.

См. документы для более подробной информации о том, как все это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...