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