pytest异步monkeypatch将模拟应用于所有测试

时间:2019-10-02 16:34:13

标签: python pytest python-3.7

我有一个异步库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

我看到有a library用于异步猴子补丁,但是我想知道是否应该使用更好的模式。也许与CoroutineMock有关?

0 个答案:

没有答案