Pytest асинхронный monkeypatch применяет макет ко всем тестам - PullRequest
1 голос
/ 02 октября 2019

У меня есть асинхронная библиотека asynpg, которая отправляет запросы во внешнюю базу данных.

Я хочу иметь тест, который проверяет syncpg.connect для имитации соединения с базой данных, даже когда равно нет:

@pytest.fixture
def mock_asyncpg(monkeypatch, mock_data):
    """ Patch asyncpg.connect """
    monkeypatch.setattr(asyncpg, "connect", mock_asyncio_connect(mock_data))

Если я хочу проверить с помощью макета, я могу включить его:

@pytest.mark.asyncio
async def test_with_mock(mock_asyncpg):

Но я также хотел бы проверить с реальной, немодированной, версиейиз asyncpg, но asyncpg везде был пропатчен обезьяной, и все тесты видят версию, пропатченную обезьяной.

Я предполагаю, что это происходит потому, что мои тесты работают асинхронно, поэтому все они видят одну и ту же версиюиз asyncpg

Я вижу, что есть библиотека для асинхронного исправления обезьян, но мне интересно, есть ли лучший шаблон, который я должен использовать. Может быть, что-то делать с CoroutineMock ?

...