解决方案实际上非常简单:我只需要将
__call__模拟方法转换为协程:
class AsyncMock(MagicMock): async def __call__(self, *args, **kwargs): return super(AsyncMock, self).__call__(*args, **kwargs)
完美运行,当调用模拟时,代码接收本地协程
用法示例:
@mock.patch('my.path.asyncio.sleep', new_callable=AsyncMock)def test_stuff(sleep): # pre


