Skip to content

Commit

Permalink
tests: fix assert message comparison
Browse files Browse the repository at this point in the history
In some cases assert messages are prefixed by 2 spaces and we don't have to
be strict here. The key is to compare the contents pytest-httpserver
provides, so we split the message by lines and also strip them.

Fixes #345
  • Loading branch information
csernazs committed Jul 21, 2024
1 parent 6b660e7 commit 12cf689
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 23 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
fixes:
- |
Fix pytest-httpserver's own tests related to log querying. No functional
changes in pytest-httpserver code itself. `#345 <https://github.com/csernazs/pytest-httpserver/issues/345>`_
54 changes: 31 additions & 23 deletions tests/test_log_querying.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,37 +38,45 @@ def test_verify_assert_msg(httpserver: HTTPServer):
headers = {"User-Agent": "requests", "Accept-Encoding": "gzip, deflate"}
assert requests.get(httpserver.url_for("/foo"), headers=headers).status_code == 404

expected_lines = [
"Matching request found 0 times but expected 1 times.",
"Expected request: <RequestMatcher uri='/foo' method='POST' query_string=None headers={} data"
"=None json={'foo': 'bar'}>",
"Found 1 similar request(s):",
"--- Similar Request Start",
"Path: /foo",
"Method: GET",
"Body: b''",
f"Headers: Host: localhost:{httpserver.port}",
"User-Agent: requests",
"Accept-Encoding: gzip, deflate",
"Accept: */*",
"Connection: keep-alive",
"",
"",
"Query String: ''",
"--- Similar Request End",
]

with pytest.raises(AssertionError) as err:
httpserver.assert_request_made(RequestMatcher("/foo", json={"foo": "bar"}, method="POST"))

expected_message = f"""Matching request found 0 times but expected 1 times.
Expected request: <RequestMatcher uri='/foo' method='POST' query_string=None headers={{}} data=None json={{'foo': 'bar'}}>
Found 1 similar request(s):
--- Similar Request Start
Path: /foo
Method: GET
Body: b''
Headers: Host: localhost:{httpserver.port}\r
User-Agent: requests\r
Accept-Encoding: gzip, deflate\r
Accept: */*\r
Connection: keep-alive\r
\r
Query String: ''
--- Similar Request End
""" # noqa: E501
assert str(err.value) == expected_message
actual_lines = [x.strip() for x in str(err.value).splitlines()][: len(expected_lines)]
assert actual_lines == expected_lines


def test_verify_assert_msg_no_similar_requests(httpserver: HTTPServer):
httpserver.expect_request("/foo", json={"foo": "bar"}, method="POST").respond_with_data("OK")

expected_lines = [
"Matching request found 0 times but expected 1 times.",
"Expected request: <RequestMatcher uri='/foo' method='POST' query_string=None headers={} data"
"=None json={'foo': 'bar'}>",
"No similar requests found.",
]

with pytest.raises(AssertionError) as err:
httpserver.assert_request_made(RequestMatcher("/foo", json={"foo": "bar"}, method="POST"))

expected_message = """Matching request found 0 times but expected 1 times.
Expected request: <RequestMatcher uri='/foo' method='POST' query_string=None headers={} data=None json={'foo': 'bar'}>
No similar requests found.
"""
assert str(err.value) == expected_message
actual_lines = [x.strip() for x in str(err.value).splitlines()][: len(expected_lines)]
assert actual_lines == expected_lines

0 comments on commit 12cf689

Please sign in to comment.