diff --git a/tests/conftest.py b/tests/conftest.py index eb6d452b4..9189df4d1 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,13 +1,9 @@ -import os -import sys -from multiprocessing import Process from urllib import parse from urllib.request import urlopen import pytest -from tests.fake_webapp import EXAMPLE_APP -from tests.fake_webapp import start_flask_app +from tests.fake_webapp_server import start_server, stop_server import splinter from splinter import Browser @@ -30,57 +26,8 @@ def selenium_server_is_running(): return "WebDriver Hub" in page_contents -class Env: - def __init__(self): - self.process = None - self.host = "localhost" - self.port = 5000 - - -env = Env() - - -def wait_until_start(): - while True: - try: - results = urlopen(EXAMPLE_APP) - if results.code == 404: - raise Exception("%s returned unexpected 404" % EXAMPLE_APP) - break - except OSError: - pass - - -def wait_until_stop(): - while True: - try: - results = urlopen(EXAMPLE_APP) - if results.code == 404: - break - except OSError: - break - - -def start_server(): - sys.stderr = open(os.devnull, "w") - env.process = Process(target=start_flask_app, args=(env.host, env.port)) - env.process.daemon = True - env.process.start() - wait_until_start() - - -def stop_server(): - env.process.terminate() - env.process.join() - wait_until_stop() - - def pytest_configure(config): - try: - start_server() - except Exception as e: - sys.stdout.write("Failed to start test server: %s\n\n" % e) - sys.exit(1) + start_server() def pytest_unconfigure(config): diff --git a/tests/fake_webapp_server.py b/tests/fake_webapp_server.py new file mode 100644 index 000000000..ee2ee33c0 --- /dev/null +++ b/tests/fake_webapp_server.py @@ -0,0 +1,58 @@ +import multiprocessing +import os +import sys +from urllib.request import urlopen + +from tests.fake_webapp import EXAMPLE_APP +from tests.fake_webapp import start_flask_app + + +class Env: + def __init__(self): + self.process = None + self.host = "localhost" + self.port = 5000 + + +env = Env() + + +def wait_until_start(): + while True: + try: + results = urlopen(EXAMPLE_APP) + if results.code == 404: + raise Exception("%s returned unexpected 404" % EXAMPLE_APP) + break + except OSError: + pass + + +def wait_until_stop(): + while True: + try: + results = urlopen(EXAMPLE_APP) + if results.code == 404: + break + except OSError: + break + + +def start_server(): + """Start the Flask app used for integration testing.""" + try: + sys.stderr = open(os.devnull, "w") + env.process = multiprocessing.Process(target=start_flask_app, args=(env.host, env.port)) + env.process.daemon = True + env.process.start() + wait_until_start() + except Exception as e: + sys.stdout.write("Failed to start test server: %s\n\n" % e) + sys.exit(1) + + +def stop_server(): + """Stop the Flask app used for integration testing.""" + env.process.terminate() + env.process.join() + wait_until_stop()