Skip to content

Releases: Colin-b/pytest_httpx

0.35.0 (2024-11-28)

28 Nov 19:16
4477806
Compare
Choose a tag to compare

Changed

0.34.0 (2024-11-18)

18 Nov 18:50
c91c327
Compare
Choose a tag to compare

Added

  • is_optional parameter is now available on responses and callbacks registration. Allowing to add optional responses while keeping other responses as mandatory. Refer to documentation for more details.
  • is_reusable parameter is now available on responses and callbacks registration. Allowing to add multi-match responses while keeping other responses as single-match. Refer to documentation for more details.

Fixed

  • httpx_mock.get_request will now also propose to refine filters if more than one request is found instead of only proposing to switch to httpx_mock.get_requests.

0.33.0 (2024-10-28)

28 Oct 20:34
f0e070d
Compare
Choose a tag to compare

Added

  • Explicit support for python 3.13.
  • should_mock option (callable returning a boolean) is now available, defaulting to always returning True. Refer to documentation for more details.
  • Matching on the full multipart body can now be performed using match_files and match_data parameters. Refer to documentation for more details.
  • Matching on extensions (including timeout) can now be performed using match_extensions parameter. Refer to documentation for more details.

Removed

  • non_mocked_hosts option is not available anymore. Use should_mock instead as in the following sample:
    import pytest
    
    @pytest.mark.httpx_mock(non_mocked_hosts=["my_local_test_host"])
    def test_previous_behavior(httpx_mock):
        ...
    
    @pytest.mark.httpx_mock(should_mock=lambda request: request.url.host not in ["my_local_test_host"])
    def test_new_behavior(httpx_mock):
        ...
    Please note that your hosts might need to be prefixed with www. depending on your usage.

0.32.0 (2024-09-27)

27 Sep 13:16
dcc725f
Compare
Choose a tag to compare

Added

  • The following option is now available:
    • can_send_already_matched_responses (boolean), defaulting to False.
  • Assertion failure message in case of unmatched responses is now linking documentation on how to deactivate the check.
  • Assertion failure message in case of unmatched requests is now linking documentation on how to deactivate the check.
  • httpx.TimeoutException message issued in case of unmatched request is now linking documentation on how to reuse responses (in case some responses are already matched).

Fixed

  • Documentation now clearly state the risks associated with changing the default options.
  • Assertion failure message in case of unmatched requests at teardown is now describing requests in a more user-friendly way.
  • Assertion failure message in case of unmatched requests at teardown is now prefixing requests with - to highlight the fact that this is a list, preventing misapprehension in case only one element exists.
  • Assertion failure message in case of unmatched responses at teardown is now prefixing responses with - to highlight the fact that this is a list, preventing misapprehension in case only one element exists.
  • httpx.TimeoutException message issued in case of unmatched request is now prefixing available responses with - to highlight the fact that this is a list, preventing misapprehension in case only one element exists.
  • httpx.TimeoutException message issued in case of unmatched request is now listing unmatched responses (in registration order) before already matched one (still in registration order).
    • The incentive behind this change is to help identify a potential mismatch faster as the first unmatched response is the most likely to be the one expected to match.
  • Response description in failure messages (httpx.TimeoutException message issued in case of unmatched request or assertion failure message in case of unmatched responses at teardown) is now displaying if the response was already matched or not and less misleading in it's phrasing about what it can match (a single request by default).

Changed

  • Last registered matching response will not be reused by default anymore in case all matching responses have already been sent.
    • This behavior can be changed thanks to the new pytest.mark.httpx_mock(can_send_already_matched_responses=True) option.
    • The incentive behind this change is to spot regression if a request was issued more than the expected number of times.
  • HTTPXMock class was only exposed for type hinting purpose. This is now explained in the class docstring.
    • As a result this is the last time a change to __init__ signature will be documented and considered a breaking change.
    • Future changes will not be documented and will be considered as internal refactoring not worth a version bump.
    • __init__ now expects one parameter, the newly introduced (since [0.31.0]) options.
  • HTTPXMockOptions class was never intended to be exposed and is now marked as private.

0.31.2 (2024-09-23)

23 Sep 17:21
0cbba7c
Compare
Choose a tag to compare

Fixed

  • httpx_mock marker can now be defined at different levels for a single test.

0.31.1 (2024-09-22)

22 Sep 13:57
75c308e
Compare
Choose a tag to compare

Fixed

  • It is now possible to match on content provided as async iterable by the client.

0.31.0 (2024-09-20)

20 Sep 10:38
26a374e
Compare
Choose a tag to compare

Changed

  • Tests will now fail at teardown by default if some requests were issued but were not matched.
    • This behavior can be changed thanks to the new pytest.mark.httpx_mock(assert_all_requests_were_expected=False) option.
  • The httpx_mock fixture is now configured using a marker (many thanks to Frazer McLean).
    # Apply marker to whole module
    pytestmark = pytest.mark.httpx_mock(assert_all_responses_were_requested=False)
    
    # Or to specific tests
    @pytest.mark.httpx_mock(non_mocked_hosts=[...])
    def test_foo(httpx_mock):
        ...
    • The following options are available:
      • assert_all_responses_were_requested (boolean), defaulting to True.
      • assert_all_requests_were_expected (boolean), defaulting to True.
      • non_mocked_hosts (iterable), defaulting to an empty list, meaning all hosts are mocked.
  • httpx_mock.reset do not expect any parameter anymore and will only reset the mock state (no assertions will be performed).

Removed

  • pytest 7 is not supported anymore (pytest 8 has been out for 9 months already).
  • assert_all_responses_were_requested fixture is not available anymore, use pytest.mark.httpx_mock(assert_all_responses_were_requested=False) instead.
  • non_mocked_hosts fixture is not available anymore, use pytest.mark.httpx_mock(non_mocked_hosts=[]) instead.

0.30.0 (2024-02-21)

21 Feb 18:01
36c5062
Compare
Choose a tag to compare

Changed

Fixed

  • Switch from setup.py to pyproject.toml (many thanks to Felix Scherz).

0.29.0 (2024-01-29)

29 Jan 20:11
fcb442a
Compare
Choose a tag to compare

Added

0.28.0 (2023-12-21)

21 Dec 09:20
0abf1eb
Compare
Choose a tag to compare

Changed