How can I write unit tests for a socketserver request handler? I tried using the following code, but ran into a problem:
import socketserver, unittest, threading class TestServer(socketserver.ThreadingMixIn, socketserver.TCPServer): allow_reuse_address = True class MyRequestHandlerTest(unittest.TestCase): def setUp(self): self.server = TestServer((HOST, PORT), MyRequestHandler) self.server_thread = threading.Thread(target=self.server.serve_forever) self.client = socket.create_connection((HOST, PORT))
If I try to use several test functions, for example
def test_foo(self): self.client.send(b'foo\n') result = self.client.recv(1024) self.assertEqual(b'FOO', result) def test_bar(self): self.client.send(b'bar\n') result = self.client.recv(1024) self.assertEqual(b'BAR', result)
I get an error
socket.error: [Errno 98] Address already in use
in the line self.server = ... , although I instructed the allow_reuse_address test server.
Edit: deleted one of two errors that I originally posted to simplify the issue.
source share