Подтвердить что ты не робот

Тест Django RequestFactory vs Client

Я пытаюсь решить, следует ли использовать Django Client или RequestFactory для проверки моих просмотров.

Я создаю свой сервер, используя DjangoRESTFramework, и это действительно просто:

class SimpleModelList(generics.ListCreateAPIView):
    """
    Retrieve list of all route_areas or create a new one.
    """
    queryset = SimpleModel.objects.all()
    serializer_class = SimpleModelSerializer
    filter_backends = (IsOwnerFilterBackend,)

    def perform_create(self, serializer):
        serializer.save(owner=self.request.user)

В чем разница между тестированием с Django Client и RequestFactory и какой подход больше подходит для тестирования сервера REST (если есть какая-то разница, кроме того, что нравится лучше)?

Должен ли я создавать тесты с обоими, чтобы обеспечить лучшее покрытие для моей системы?

4b9b3361

Ответ 1

RequestFactory и Client имеют несколько разных вариантов использования. Чтобы выразить это в одном предложении: RequestFactory возвращает a request, а Client возвращает a response.

RequestFactory выполняет то, что он говорит - это factory для создания объектов request. Ничего больше, не меньше.

Client используется для подбора полного цикла запроса-ответа. Он создаст объект request, который затем будет проходить через обработчик WSGI. Этот обработчик разрешает URL-адрес, вызывает соответствующее промежуточное программное обеспечение и запускает представление. Затем он возвращает объект ответа. Он имеет дополнительное преимущество, что он собирает много дополнительных данных на response объект, который чрезвычайно полезен для тестирования.

RequestFactory фактически не касается какого-либо вашего кода, но объект request может использоваться для проверки частей вашего кода, для которых требуется действительный request. Client запускает ваши представления, поэтому для проверки ваших просмотров вам нужно использовать Client и проверить ответ. Не забудьте проверить документацию на Client.