Функция тестирования Django Rest Framework, использующая библиотеку запросов - PullRequest
0 голосов
/ 12 декабря 2018

Как я могу проверить следующую функцию в проекте django?

@api_view(['GET'])
def get_films(request):
    if request.method == "GET":
        r = requests.get('https://swapi.co/api/films')
        if r.status_code == 200:
            data = r.json()
            return Response(data, status=status.HTTP_200_OK)
        else:
            return Response({"error": "Request failed"}, status=r.status_code)
    else:
        return Response({"error": "Method not allowed"}, status=status.HTTP_400_BAD_REQUEST)

1 Ответ

0 голосов
/ 12 декабря 2018

Вам необходимо смоделировать запросы.

from unittest.mock import Mock, patch
from rest_framework.test import APITestCase

class YourTests(APITestCase):

    def test_get_films_success(self):
        with patch('*location of your get_films_file*.requests') as mock_requests:
            mock_requests.post.return_value = mock_response = Mock()
            mock_response.status_code = 200
            mock_response.json.return_value = {'message': "Your expected response"}
            response = self.client.get(f'{your_url_for_get_films_view}')
            self.assertEqual(response.status_code, status.HTTP_200_OK)
            self.assertEqual(response.data, {'message': f'{expected_response}'})

При подобном подходе вы можете проверить все ваши условия на предмет неверного метода или ответа 404.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...