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