Hi all! I'm working in a little Python exercise with testing since the beginning. So far I'm with my first end to end test (not even finished yet) trying to:
1) Launch a development web server linked to a demo app that just returns 'Hello World!' 2) Make a GET request successfully I can't understand very well what's happening. It seems that the main thread gets blocked listening to the web server. My intent was to spawn another process for the server independent of the test. Obviously I'm doing something wrong. I've made several guesses commenting pieces of code (tearDown method for example) but I didn't manage to solve the problem(s). I'm running the test through PyCharm. Python version = 3.4.3 Here it's the code: test_forecast_end_to_end.py =========================== import unittest from tests.end_to_end.forecastserver import ForecastServer import src.forecast.webservice as webservice import requests class TestForecastEndToEnd(unittest.TestCase): def setUp(self): # Start the forecast server self.server = ForecastServer() self.server.start(webservice.app) def tearDown(self): # Stop the forecast server self.server.stop() def test_webservice_receives_a_request(self): response = requests.get('http://localhost:8000') print(response.text) if __name__ == '__main__': unittest.main() forecastserver.py ================= from wsgiref.simple_server import make_server import multiprocessing class ForecastServer: def __init__(self): self._httpd_process = None def start(self, webservice): if not self._httpd_process: httpd = make_server('localhost', 8000, webservice) self._httpd_process = multiprocessing.Process( target=httpd.serve_forever) self._httpd_process.start() def stop(self): if self._httpd_process: self._httpd_process.join() self._httpd_process.terminate() del self._httpd_process webservice.py ============= def app(environ, start_response): status = '200 OK' headers = [('Content-type', 'text/plain')] start_response(status, headers) return ['Hello World!'] -- https://mail.python.org/mailman/listinfo/python-list