def server(request): """ Return a TCPServer listening on a random port. The requests handled by this server are added to the list TCPServer.requests. This attribute can be used in tests to verify that certain request have been executed. """ s = TCPServer(('127.0.0.1', 0), TestHandler) # All requests are added to this list. s.requests = [] t = Thread(target=s.serve_forever) t.daemon = True t.start() def fin(): s.stop = True s.server_close() request.addfinalizer(fin) return s