title: How to test Python 3.4 asyncio code?
body: <p>What's the best way to write unit tests for code using the Python 3.4 <code>asyncio</code> library? Assume I want to test a TCP client (<code>SocketConnection</code>):</p>
  
  <pre><code>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())
  </code></pre>
  
  <p>When running this test case with the default test runner, the test will always succeed as the method executes only up until the first <code>yield from</code> instruction, after which it returns before executing any assertions. This causes tests to always succeed.</p>
  
  <p>Is there a prebuilt test runner that is able to handle asynchronous code like this?</p>