Как подражать пути url, возвращающему ответ в Django / Python?
У меня есть функция следующего вида:
def get_some_data(api_url, **kwargs)
# some logic on generating headers
# some more logic
response = requests.get(api_url, headers, params)
return response
Мне нужно создать поддельный/имитационный "api_url", который при запросе на него генерировал бы правильный ответ. Я понимаю, как подделать ответ:
def mock_response(data):
response = requests.Response()
response.status_code = 200
response._content = json.dumps(data)
return response
Но мне нужно, чтобы тест вызывался следующим образом:
def test_get_some_data(api_url: some_magic_url_path_that_will_return_mock_response):
Любые идеи о том, как создать url путь, возвращающий ответ в рамках теста (только стандартные Django, Python, pytest, unittest), были бы очень признательны
Документация очень хорошо написана и более чем ясно объясняет, как насмехаться над всем, что вы хотите. Но, допустим, у вас есть сервис, который выполняет вызов API третьей стороны:
def foo(url, params):
# some logic on generating headers
# some more logic
response = requests.get(url, headers, params)
return response
В своем тесте вы хотите высмеять возвращаемое значение этой службы.
@patch("path_to_service.foo")
def test_api_call_response(self, mock_response):
mock_response.return_value = # Whatever the return value you want it to be
# Here you call the service as usual
response = foo(..., ...)
# Assert your response