Какой лучший способ написать модульные тесты для кода с использованием библиотеки 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
, после чего он возвращается до выполнения любых утверждений. Это заставляет тесты всегда преуспеть.
Есть ли готовый тестовый бегун, который способен обрабатывать асинхронный код, подобный этому?