Hi Zsolt!
As someone just getting started with this library, I ran into this issue:
import unittest
import requests
from pytest_httpserver import HTTPServer
class TestMyStuff(unittest.TestCase):
def test_1(self):
server = HTTPServer()
server.expect_oneshot_request("/foobar").respond_with_json({"foo": "bar"})
with server.wait(stop_on_nohandler=True, raise_assertions=True, timeout=1.0) as waiting:
requests.get(server.url_for("/foobar")) # raises requests.exceptions.ConnectionError
assert waiting.result
I figured out the issue was with my code, the server needs to be started, and since my project doesn't use pytest, that needs to be done with the context manager manually.
server.expect_oneshot_request("/foobar").respond_with_json({"foo": "bar"})
- with server.wait(stop_on_nohandler=True, raise_assertions=True, timeout=1.0) as waiting:
- requests.get(server.url_for("/foobar")) # raises requests.exceptions.ConnectionError
+ with server:
+ with server.wait(stop_on_nohandler=True, raise_assertions=True, timeout=1.0) as waiting:
+ requests.get(server.url_for("/foobar")) # OK now
or more briefly:
server.expect_oneshot_request("/foobar").respond_with_json({"foo": "bar"})
- with server.wait(stop_on_nohandler=True, raise_assertions=True, timeout=1.0) as waiting:
+ with server, server.wait(stop_on_nohandler=True, raise_assertions=True, timeout=1.0) as waiting:
- requests.get(server.url_for("/foobar")) # raises requests.exceptions.ConnectionError
+ requests.get(server.url_for("/foobar")) # OK now
I first thought I'd just let you know that I got confused about this part of the API.
Then I was wondering, what would you think about the .wait() context manager also doing the work of the HTTPServer context manager if the server isn't started yet? That would make the original code work, but I'm not sure about potential downsides. Maybe there are situations where you want to start .wait()-ing before you start a server?
Hi Zsolt!
As someone just getting started with this library, I ran into this issue:
I figured out the issue was with my code, the
serverneeds to be started, and since my project doesn't usepytest, that needs to be done with the context manager manually.server.expect_oneshot_request("/foobar").respond_with_json({"foo": "bar"}) - with server.wait(stop_on_nohandler=True, raise_assertions=True, timeout=1.0) as waiting: - requests.get(server.url_for("/foobar")) # raises requests.exceptions.ConnectionError + with server: + with server.wait(stop_on_nohandler=True, raise_assertions=True, timeout=1.0) as waiting: + requests.get(server.url_for("/foobar")) # OK nowor more briefly:
server.expect_oneshot_request("/foobar").respond_with_json({"foo": "bar"}) - with server.wait(stop_on_nohandler=True, raise_assertions=True, timeout=1.0) as waiting: + with server, server.wait(stop_on_nohandler=True, raise_assertions=True, timeout=1.0) as waiting: - requests.get(server.url_for("/foobar")) # raises requests.exceptions.ConnectionError + requests.get(server.url_for("/foobar")) # OK nowI first thought I'd just let you know that I got confused about this part of the API.
Then I was wondering, what would you think about the
.wait()context manager also doing the work of theHTTPServercontext manager if the server isn't started yet? That would make the original code work, but I'm not sure about potential downsides. Maybe there are situations where you want to start.wait()-ing before you start a server?