Skip to content

Commit 623dfea

Browse files
committed
RequestHandler: add __repr__
Add `__repr__` to support pytest's diff view. Such case is when oneshot_handlers are compared with an empty list `[]`. Fixes #273.
1 parent e32a568 commit 623dfea

File tree

3 files changed

+28
-0
lines changed

3 files changed

+28
-0
lines changed

pytest_httpserver/httpserver.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -560,6 +560,15 @@ def respond_with_handler(self, func: Callable[[Request], Response]):
560560
def respond_with_response(self, response: Response):
561561
self.request_handler = lambda request: response
562562

563+
def __repr__(self) -> str:
564+
class_name = self.__class__.__name__
565+
retval = (
566+
f"<{class_name} uri={self.matcher.uri!r} method={self.matcher.method!r} "
567+
f"query_string={self.matcher.query_string!r} headers={self.matcher.headers!r} data={self.matcher.data!r} "
568+
f"json={self.matcher.json!r}>"
569+
)
570+
return retval
571+
563572

564573
class RequestHandlerList(list):
565574
"""
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
features:
3+
- |
4+
Add ``__repr__`` to ``RequestHandler`` object so when it is compared (eg. with
5+
the ``log`` attribute of the server) it will show the matcher parameters.

tests/test_permanent.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,3 +106,17 @@ def test_response_handler_replaced(httpserver: HTTPServer):
106106
response = requests.get(httpserver.url_for("/foobar"))
107107
assert response.json() == {"foo": "bar"}
108108
assert response.status_code == 200
109+
110+
111+
def test_request_handler_repr(httpserver: HTTPServer):
112+
handler = httpserver.expect_request("/foo", method="POST")
113+
assert (
114+
repr(handler)
115+
== "<RequestHandler uri='/foo' method='POST' query_string=None headers={} data=None json=<UNDEFINED>>"
116+
)
117+
118+
handler = httpserver.expect_request("/query", query_string={"a": "123"})
119+
assert (
120+
repr(handler) == "<RequestHandler uri='/query' method='__ALL' query_string={'a': '123'} "
121+
"headers={} data=None json=<UNDEFINED>>"
122+
)

0 commit comments

Comments
 (0)