Я должен протестировать API для 404, поэтому вот мой тестовый пример
@patch('api.services.requests.get')
def test_whitelisted_response_failure(self, mock_get):
response_body = utils.test_file('get_data.json')["HTTP_ERROR"]
mock_response = Mock()
mock_response.json.return_value = response_body
mock_response.status_code = status.HTTP_404_NOT_FOUND
mock_response.raise_for_status.side_effect = requests.exceptions.HTTPError
mock_get.return_value = mock_response
response = self.client.get(self.url, content_type='application/json')
И это мой API, который я должен тестировать.
def get(self, request, id):
try:
response = Service.get_detail(id)
response.raise_for_status() # response.status_code = 404 here
except HTTPError as e:
print("INSIDE HTTP ERRORS")
print(getattr(e, 'response', None)) # here None gets printed
Код в API выдает исключение, как и ожидалось, но как передать объект ответа в HTTPError.
Я что-то здесь упускаю?