Какие модульные тесты я мог бы создать для такого класса?

У меня есть несколько таких классов в моих представлениях. И мне нужно протестировать их все.

class ExampleViewSet(viewsets.ModelViewSet):
    serializer_class = ExampleSerializer
    queryset = Example.objects.all()
    filter_backends = (filters.DjangoFilterBackend,)
    filterset_class = ExampleFilter

Все они были созданы с помощью доступных библиотек Django Rest Framework.

ViewSet по сути являются REST Endpoints, поэтому если вы зарегистрировали его в URL, вы должны быть в состоянии написать тест для всех CRUD операций:

router.register(r'examples', views.ExampleViewSet, basename='example')

В результате будет сгенерировано следующее:

  • example-list -> /examples -> GET
  • example-detail -> /examples/1 -> GET
  • example-list -> /examples -> POST
  • example-detail -> /examples/1 -> PUT
  • example-detail -> examples/1 -> DELETE

Таким образом, вы можете протестировать каждую конечную точку, чтобы убедиться, что для них выполняется ожидаемая логика.

Примеры тестов:

class ExampleViewSetTestCase(APITestCase):
    @classmethod
    def setUpTestData(cls):
        # Example.objects.create(...)
        # cls.user = User.objects.create(...)

    def authenticate(self):
        self.client.force_login(self.user)

    def test_list_examples(self):
        self.authenticate()
        response = self.client.get(reverse('example-list'))
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertEqual(len(response.data['results']), 1)
        self.assertEqual(
            dict(response.data['results'][0]),
            {'id': '1', 'key': 'value'})
    # More test to Update, Create and Delete.
Вернуться на верх