Я пытаюсь имитировать внешний API, используя библиотеку ответов. Я хочу проверить, правильно ли я передал свои параметры в моем запросе, поэтому я использую этот минимальный рабочий пример из ответов docs :
import responses
import requests
@responses.activate
def test_request_params():
responses.add(
method=responses.GET,
url="http://example.com?hello=world",
body="test",
match_querystring=False,
)
resp = requests.get('http://example.com', params={"hello": "world"})
assert responses.calls[0].request.params == {"hello": "world"}
Проблема в том, что это прерывается как как только я заменю http://example.com
URL-адресом, который похож на конечную точку API:
@responses.activate
def test_request_params():
responses.add(
method=responses.GET,
url="http://example.com/api/endpoint?hello=world",
body="test",
match_querystring=False,
)
resp = requests.get('http://example.com/api/endpoint', params={"hello": "world"})
assert responses.calls[0].request.params == {"hello": "world"}
Теперь ответы добавили часть URL-адреса к первому параметру запроса:
> assert responses.calls[0].request.params == {"hello": "world"}
E AssertionError: assert {'/api/endpoint?hello': 'world'} == {'hello': 'world'}
Я чего-то не хватает?