Request Matchers
Matching HTTP Methods
Matching Single Method
The match_method function allows you to specify the HTTP method that an incoming request must use to match the mock. For example, to match a GET request, you can use the following code:
from jj.http.methods import GET
jj.match_method(GET)
This means the matcher will only activate for HTTP GET requests.
To match any HTTP method, use the wildcard *
jj.match_method("*")
Matching Multiple Methods
If you want to match multiple HTTP methods, use the match_methods function:
from jj.http.methods import PUT, PATCH
jj.match_methods(PUT, PATCH)
With this setup, your mock will respond to either a PUT or PATCH request.
Matching URL Paths
Matching Exact Paths
To match a request's URL path, use the match_path function. For example, to match a request to /users:
jj.match_path("/users")
Matching Dynamic Segments
JJ also supports dynamic path matching using segments. For instance, to match any user ID in the /users/{user_id} path:
jj.match_path("/users/{user_id}")
For additional information on segment matching, refer to the aiohttp documentation
Matching Query Parameters
Matching Single Parameter
To match a single query parameter in the URL, use the match_param function:
jj.match_param("locale", "en_US")
This will match requests where the locale parameter is set to en_US.
Matching Multiple Parameters
To match multiple query parameters, you can use the match_params function:
jj.match_params({"locale": "en_US", "timezone": "UTC"})
Matching HTTP Headers
Matching Single Header
JJ allows you to match incoming requests based on specific HTTP headers using the match_header function:
jj.match_header("X-Forwarded-Proto", "https")
This will match requests that have the X-Forwarded-Proto header set to https.
Matching Multiple Headers
To match multiple headers, use the match_headers function:
jj.match_headers({
"x-user-id": "1432",
"x-client-id": "iphone",
})