All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Fix
files
pattern not handlingstr
andBytesIO
, thanks @pierremonico for input (#260)
- Add support for
None
values indata
pattern, thanks @slingshotvfx for issue (#259)
- Fix matching request data when files are provided, thanks @ziima for input (#252)
- Add support for data__contains lookup (#252)
- Add
files
pattern to support matching on uploads, thanks @ziima for input (#253) - Add
SetCookie
utility for easier mocking of response cookie headers (#254)
- Enhance documentation on iterable side effects (#255)
- Enhance documentation on named routes and add tip about a catch-all route (#257)
- Better assertion output for
assert_all_called
, thanks @sileht (#224) - Support for quoted path pattern matching, thanks @alexdrydew for input (#240)
- Enable content__contains pattern, thanks @rjprins (#236)
- Added initial
CONTRIBUTING.md
, thanks @morenoh149 (#238)
- Docs about retrieving mocked calls, thanks @tomhamiltonstubber (#230)
- Docs about
Router.assert_all_called()
, thanks @BeyondEvil for input (#241)
- Support HTTPX 0.23.1, thanks @g-as for input (#223)
- Officially support Python 3.11 (#223)
- Run pre-commit hooks in CI workflow (#219)
- Bump autoflake, thanks @antonagestam (#220)
- Drop support for Python 3.6 (#218)
- Type
Router.__getitem__
to not return optional routes, thanks @flaeppe (#216) - Change
Call.response
to raise instead of returning optional response (#217) - Change
CallList.last
to raise instead of return optional call (#217) - Type
M()
to not return optional pattern, by introducing aNoop
pattern (#217) - Type
Route.pattern
to not be optional (#217)
- Correct type hints for side effects (#217)
- Runs
mypy
on both tests and respx (#217) - Added nox test session for python 3.11 (#217)
- Added
Call.has_response
helper, now that.response
raises (#217)
- Fix typing for Route modulos arg
- Respect patterns with empty value when using equal lookup (#206)
- Use pytest asyncio auto mode (#212)
- Fix mock decorator to work together with pytest fixtures (#213)
- Wrap pytest function correctly, i.e. don't hide real function name (#213)
- Enable mypy strict_optional (#201)
- Better cleanup before building egg, thanks @nebularazer (#198)
- Allow first path segments containing colons, thanks @hannseman. (#192)
- Fix license classifier, thanks @shadchin (#195)
- Fix typos, thanks @kianmeng (#194)
- Support HTTPX 0.21.0. (#189)
- Use Session.notify when chaining nox sessions, thanks @flaeppe. (#188)
- Add overloads to
MockRouter.__call__
, thanks @flaeppe. (#187) - Enhance AND pattern evaluation to fail fast. (#185)
- Fix CallList assertion error message. (#178)
- Prevent method and url as lookups in HTTP method helpers, thanks @flaeppe. (#183)
- Fail pattern match when JSON path not found. (#184)
- Include extensions when instantiating request in HTTPCoreMocker. (#176)
- Respect ordered param values. (#172)
- Raise custom error types for assertion checks. (#174)
- Downgrade
HTTPX
requirement to 0.20.0. (#170)
- Add support for matching param with ANY value. (#167)
- Deprecate RESPX MockTransport in favour of HTTPX MockTransport. (#152)
- Support
HTTPX
1.0.0b0. (#164) - Allow tuples as params to align with httpx, thanks @shelbylsmith. (#151)
- Fix xfail marked tests. (#153)
- Only publish docs for upstream repo, thanks @hugovk. (#161)
- Add optional route arg to side effects. (#158)
- Implement support for async side effects in router. (#147)
- Support mocking responses using asgi/wsgi apps. (#146)
- Added pytest fixture and configuration marker. (#150)
- Typo in import from examples.md, thanks @shelbylsmith. (#148)
- Fix pass-through test case. (#149)
- Require
HTTPX
0.18.0 and implement the new transport API. (PR #142) - Removed ASGI and WSGI transports from httpcore patch list. (PR #131)
- Don't pre-read mocked async response streams. (PR #136)
- Fixed syntax highlighting in docs, thanks @florimondmanca. (PR #134)
- Type check
route.return_value
, thanks @tzing. (PR #133) - Fixed a typo in the docs, thanks @lewoudar. (PR #139)
- Added support for adding/removing patch targets. (PR #131)
- Added test session for python 3.10. (PR #140)
- Added RESPX Mock Swallowtail to README. (PR #128)
- Fixed decorator
respx_mock
kwarg, mistreated as apytest
fixture. (PR #117) - Fixed
JSON
pattern sometimes causing aJSONDecodeError
. (PR #124)
- Snapshot and rollback of routes' pattern and name. (PR #120)
- Internally extracted a
RouteList
fromRouter
. (PR #120) - Auto registration of
Mocker
implementations and theirusing
name. (PR #121) - Added
HTTPXMocker
, optionally patchingHTTPX
. (PR #122)
- Protected a routes' pattern to be modified. (PR #120)
- Easier support for using HTTPX MockTransport. (PR #118)
- Support mixed case for
method__in
andscheme__in
pattern lookups. (PR #113)
- Handle missing path in URL pattern (PR #113)
- Refactored internal mocking vs
MockTransport
. (PR #112)
- Dropped raw request support when parsing patterns (PR #113)
- Extended
url
pattern with support forHTTPX
proxy url format. (PR #110) - Extended
host
pattern with support for regex lookup. (PR #110) - Added
respx.request(...)
. (PR #111)
- Deprecated old
MockTransport
in favour ofrespx.mock(...)
. (PR #109) - Wrapping actual
MockTransport
inMockRouter
, instead of extending. (PR #109) - Extracted a
HTTPXMock
, for transport patching, fromMockRouter
. (PR #109)
One year since first release, yay!
- Dropped all deprecated APIs and models, see
0.15.0
Changed section. (PR #105)
- Added support for content, data and json patterns. (PR #106)
- Automatic pattern registration when subclassing Pattern. (PR #108)
- Multiple snapshots to support nested mock routers. (PR #107)
- Snapshot routes and mocks when starting router, rollback when stopping. (PR #102)
- Added support for base_url combined with pattern lookups. (PR #103)
- Added support for patterns/lookups to the HTTP method helpers. (PR #104)
- Fix to not clear routes added outside mock context when stopping router. (PR #102)
- Added
respx.route(...)
with enhanced request pattern matching. (PR #96) - Added support for AND/OR when request pattern matching. (PR #96)
- Added support for adding responses to a route using % operator. (PR #96)
- Added support for both
httpx.Response
andMockResponse
. (PR #96) - Enhanced Route (RequestPattern) with
.respond(...)
response details. (PR #96) - Enhanced Route (RequestPattern) with
.pass_through()
. (PR #96) - Add support for using route as side effect decorator. (PR #98)
- Add
headers
andcookies
patterns. (PR #99) - Add
contains
andin
lookups. (PR #99) - Introduced Route
.mock(...)
in favour of callbacks. (PR #101) - Introduced Route
.return_value
and.side_effect
setters. (PR #101)
- Deprecated mixing of request pattern and response details in all API's. (PR #96)
- Deprecated passing http method as arg in
respx.add
in favour ofmethod=
. (PR #96) - Deprecated
alias=...
in favour ofname=...
when adding routes. (PR #96) - Deprecated
respx.aliases
in favour ofrespx.routes
. (PR #96) - Deprecated
RequestPattern
in favour ofRoute
. (PR #96) - Deprecated
ResponseTemplate
in favour ofMockResponse
. (PR #96) - Deprecated
pass_through=
in HTTP method API's (PR #96) - Deprecated
response
arg in side effects (callbacks). (PR #97) - Stacked responses are now recorded on same route calls. (PR #96)
- Pass-through routes no longer capture real response in call stats. (PR #97)
- Stacked responses no longer keeps and repeats last response. (PR #101)
- Removed support for regex
base_url
. (PR #96) - Dropped support for
async
side effects (callbacks). (PR #97) - Dropped support for mixing side effect (callback) and response details. (PR #97)
- Added
text
,html
andjson
content shorthands to ResponseTemplate. (PR #82) - Added
text
,html
andjson
content shorthands to high level API. (PR #93) - Added support to set
http_version
for a mocked response. (PR #82) - Added support for mocking by lowercase http methods, thanks @lbillinghamtn. (PR #80)
- Added query
params
to align with HTTPX API, thanks @jocke-l. (PR #81) - Easier API to get request/response from call stats, thanks @SlavaSkvortsov. (PR #85)
- Enhanced test to verify better content encoding by HTTPX. (PR #78)
- Added Python 3.9 to supported versions and test suite, thanks @jairhenrique. (PR #89)
ResponseTemplate.content
as proper getter, i.e. no resolve/encode to bytes. (PR #82)- Enhanced headers by using HTTPX Response when encoding raw responses. (PR #82)
- Deprecated
respx.stats
in favour ofrespx.calls
, thanks @SlavaSkvortsov. (PR #92)
- Recorded requests in call stats are pre-read like the responses. (PR #86)
- Postponed request decoding for enhanced performance. (PR #91)
- Lazy call history for enhanced performance, thanks @SlavaSkvortsov. (PR #92)
- Removed auto setting the
Content-Type: text/plain
header. (PR #82)
- Fixed support for
HTTPX
0.15. (PR #77)
- Added global
respx.pop
api, thanks @paulineribeyre. (PR #72)
- Dropped deprecated
HTTPXMock
in favour ofMockTransport
. - Dropped deprecated
respx.request
in favour ofrespx.add
. - Removed
HTTPX
max version requirement in setup.py.
- Fixed non-iterable pass-through responses. (PR #68)
- Dropped no longer needed
asynctest
dependency, in favour of built-in mock. (PR #69)
- Fixed support for
HTTPX
0.14.0. (PR #45)
- Added support for pop'ing a request pattern by alias, thanks @radeklat. (PR #60)
- Fixed mocking
HTTPX
clients instantiated with proxies. (PR #58) - Fixed matching URL patterns with missing path. (PR #59)
- Fixed support for
HTTPX
0.13. (PR #57)
- Added support for mocking out
HTTP Core
. - Added support for using mock transports with
HTTPX
clients without patching. - Include LICENSE.md in source distribution, thanks @synapticarbors.
- Renamed passed mock to decorated functions from
httpx_mock
torespx_mock
. - Renamed
HTTPXMock
toMockTransport
, but kept a deprecatedHTTPXMock
subclass. - Deprecated
respx.request()
in favour ofrespx.add()
.
- Fixed support for
HTTPX
0.12.0. (PR #45)
- Refactored high level and internal api for better editor autocompletion. (PR #44)
- Fixed usage of nested or parallel mock instances. (PR #39)
- Fixed support for
HTTPX
0.11.0 sync api. (PR #38)
- Renamed refactored httpx internals. (PR #37)
- Added support for configuring patterns
base_url
. (PR #34) - Added manifest and
py.typed
files.
- Fixed support for
HTTPX
0.9.3 refactorizations. (PR #35)
- Added documentation built with
mkdocs
. (PR #30)
- Dropped sync support and now requires
HTTPX
version 0.8+. (PR #32) - Renamed
respx.mock
module torespx.api
. (PR #29) - Refactored tests- and checks-runner to
nox
. (PR #31)
- Allowing assertions to be configured through decorator and context manager. (PR #28)
- Allows
mock
decorator to be used as sync or async context manager. (PR #27)
- Added
stats
to high level API and patterns, along withcall_count
. (PR #25)
- Allowing headers to be modified within a pattern match callback. (PR #26)
- Fixed responses in call stats when using synchronous
HTTPX
client. (PR #23)
- Added support for
pass_through
patterns. (PR #20) - Added
assert_all_mocked
feature and setting. (PR #21)
- Requires all
HTTPX
requests to be mocked.
- Renamed
activate
decorator tomock
. (PR #15)
- Added
assert_all_called
feature and setting. (PR #14)
- Clears call stats when exiting decorator.
- Renamed python package to
respx
. (PR #12) - Renamed
add()
torequest()
and added HTTP method shorthands. (PR #13)
- Renamed PyPI package to
respx
.
- Exposes
responsex
high level API along with aactivate
decorator. (PR #5) - Added support for custom pattern match callback function. (PR #7)
- Added support for repeated patterns. (PR #8)
- Added support for any
HTTPX
concurrency backend.
- Initial POC.