Какой лучший способ написать модульные тесты для кода с использованием библиотеки Python 3.4 asyncio? Предположим, что я хочу протестировать клиент TCP (SocketConnection):
import asyncio
import unittest
class TestSocketConnection(unittest.TestCase):
def setUp(self):
self.mock_server = MockServer("localhost", 1337)
self.socket_connection = SocketConnection("localhost", 1337)
@asyncio.coroutine
def test_sends_handshake_after_connect(self):
yield from self.socket_connection.connect()
self.assertTrue(self.mock_server.received_handshake())
При запуске этого тестового примера со стандартным тестовым бегуном тест всегда будет успешным, так как метод выполняется только до первой инструкции yield from, после чего он возвращается до выполнения любых утверждений. Это заставляет тесты всегда преуспеть.
Есть ли готовый тестовый бегун, который способен обрабатывать асинхронный код, подобный этому?