Как подражать пути 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

Вернуться на верх