Làm thế nào để tôi thực hiện cuộc gọi không đồng bộ từ một coroutine bản địa sang một số khác bằng cách sử dụng unittest.mock.patch
?Gọi mock async trong python 3.5
Tôi hiện đang có một giải pháp vụng về khá:
class CoroutineMock(MagicMock):
def __await__(self, *args, **kwargs):
future = Future()
future.set_result(self)
result = yield from future
return result
Sau đó
class TestCoroutines(TestCase):
@patch('some.path', new_callable=CoroutineMock)
def test(self, mock):
some_action()
mock.assert_called_with(1,2,3)
này hoạt động nhưng trông xấu xí. Có cách nào sâu sắc hơn để làm điều này?
Ngoài ra, giả lập này không hoạt động với asyncio.await vì asyncio.tasks.ensure_future – Zozz