Python DJANGO ИСПЫТАНИЯ тестовый пример с макетами, которые ведут себя не так, как ожидалось - PullRequest
0 голосов
/ 23 апреля 2020

Я должен протестировать 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.

Я что-то здесь упускаю?

...