Skip to content

Commit d0c53d0

Browse files
authored
Merge pull request #301 from hramezani/issue_271
Return requested params in responses.calls[].request.
2 parents 5881f05 + dbfe765 commit d0c53d0

File tree

3 files changed

+42
-0
lines changed

3 files changed

+42
-0
lines changed

README.rst

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,25 @@ a callback function to give a slightly different result, you can use ``functools
239239
)
240240
241241
242+
You can see params passed in the original ‍‍``request`` in ‍‍``responses.calls[].request.params``:
243+
244+
.. code-block:: python
245+
246+
import responses
247+
import requests
248+
249+
@responses.activate
250+
def test_request_params():
251+
responses.add(
252+
method=responses.GET,
253+
url="http://example.com?hello=world",
254+
body="test",
255+
match_querystring=False,
256+
)
257+
258+
resp = requests.get('http://example.com', params={"hello": "world"})
259+
assert response.calls[0].request.params == {"hello": "world"}
260+
242261
Responses as a context manager
243262
------------------------------
244263

responses.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -626,6 +626,7 @@ def _find_match(self, request):
626626
def _on_request(self, adapter, request, **kwargs):
627627
match = self._find_match(request)
628628
resp_callback = self.response_callback
629+
request.params = dict(parse_qsl(request.path_url.replace("/?", "")))
629630

630631
if match is None:
631632
if any(

test_responses.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1022,3 +1022,25 @@ def test_cookies_from_headers():
10221022
for k, v in cookiejar.items():
10231023
assert isinstance(v, str)
10241024
assert v == expected[k]
1025+
1026+
1027+
def test_request_param():
1028+
@responses.activate
1029+
def run():
1030+
params = {"hello": "world", "example": "params"}
1031+
responses.add(
1032+
method=responses.GET,
1033+
url="http://example.com?hello=world",
1034+
body="test",
1035+
match_querystring=False,
1036+
)
1037+
resp = requests.get("http://example.com", params=params)
1038+
assert_response(resp, "test")
1039+
assert resp.request.params == params
1040+
1041+
resp = requests.get("http://example.com")
1042+
assert_response(resp, "test")
1043+
assert resp.request.params == {}
1044+
1045+
run()
1046+
assert_reset()

0 commit comments

Comments
 (0)