Last active
November 26, 2020 15:04
-
-
Save tenuki/42a8719d8a7f882adb82ef72fdbaae44 to your computer and use it in GitHub Desktop.
Making pytest-server mock more than one server (on different address/port) simultaneously
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import pytest | |
import requests | |
from pytest_httpserver import HTTPServer | |
from pytest_httpserver.pytest_plugin import Plugin | |
class PluginHTTPServer(HTTPServer): | |
def start(self): | |
super().start() | |
def stop(self): | |
super().stop() | |
@pytest.fixture | |
def httpserver1(): | |
host, port = ("127.0.0.1", 8000) | |
server = PluginHTTPServer(host=host, port=port) | |
server.start() | |
try: | |
yield server | |
finally: | |
server.stop() | |
@pytest.fixture | |
def httpserver2(): | |
host, port = ("127.0.0.1", 9000) | |
server = PluginHTTPServer(host=host, port=port) | |
server.start() | |
try: | |
yield server | |
finally: | |
server.stop() | |
def test_wait_success(httpserver1: HTTPServer, httpserver2: HTTPServer): | |
waiting_timeout = 0.1 | |
print('url1:', httpserver1.url_for("/foobar")) | |
with httpserver1.wait(stop_on_nohandler=False, timeout=waiting_timeout) as waiting: | |
requests.get(httpserver1.url_for("/foobar")) | |
httpserver1.expect_oneshot_request("/foobar").respond_with_data("OK foobar") | |
requests.get(httpserver1.url_for("/foobar")) | |
assert waiting.result | |
httpserver2.expect_oneshot_request("/foobar").respond_with_data("OK foobar") | |
httpserver2.expect_oneshot_request("/foobaz").respond_with_data("OK foobaz") | |
print('url2:', httpserver2.url_for("/foobar")) | |
with httpserver2.wait(timeout=waiting_timeout) as waiting: | |
requests.get(httpserver2.url_for("/foobar")) | |
requests.get(httpserver2.url_for("/foobaz")) | |
assert waiting.result |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment