From e3e21a9d8b6ba15af0fc47341669e1519f1ebeb9 Mon Sep 17 00:00:00 2001 From: Cserna Zsolt Date: Sun, 21 Jul 2024 10:57:57 +0200 Subject: [PATCH] tests: fix assert message comparison 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 --- ...st_verify_assert_msg-af37678f187bb8da.yaml | 5 ++ tests/test_log_querying.py | 54 +++++++++++-------- 2 files changed, 36 insertions(+), 23 deletions(-) create mode 100644 releasenotes/notes/fix-test_verify_assert_msg-af37678f187bb8da.yaml diff --git a/releasenotes/notes/fix-test_verify_assert_msg-af37678f187bb8da.yaml b/releasenotes/notes/fix-test_verify_assert_msg-af37678f187bb8da.yaml new file mode 100644 index 0000000..d554eca --- /dev/null +++ b/releasenotes/notes/fix-test_verify_assert_msg-af37678f187bb8da.yaml @@ -0,0 +1,5 @@ +--- +fixes: + - | + Fix pytest-httpserver's own tests related to log querying. No functional + changes in pytest-httpserver code itself. `#345 `_ diff --git a/tests/test_log_querying.py b/tests/test_log_querying.py index e6873e0..e7d8190 100644 --- a/tests/test_log_querying.py +++ b/tests/test_log_querying.py @@ -37,37 +37,45 @@ def test_verify_assert_msg(httpserver: HTTPServer): httpserver.expect_request("/foo", json={"foo": "bar"}, method="POST").respond_with_data("OK") assert requests.get(httpserver.url_for("/foo"), headers={"User-Agent": "requests"}).status_code == 404 + expected_lines = [ + "Matching request found 0 times but expected 1 times.", + "Expected request: ", + "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: -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: ", + "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: -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