Как мне высмеять асинхронный вызов из одной встроенной сопрограммы в другую с помощью unittest.mock.patch
?
В настоящее время у меня довольно неудобное решение:
class CoroutineMock(MagicMock):
def __await__(self, *args, **kwargs):
future = Future()
future.set_result(self)
result = yield from future
return result
Тогда
class TestCoroutines(TestCase):
@patch('some.path', new_callable=CoroutineMock)
def test(self, mock):
some_action()
mock.assert_called_with(1,2,3)
Это работает, но выглядит уродливо. Есть ли более питонический способ сделать это?