Какие модульные тесты я мог бы создать для такого класса?
У меня есть несколько таких классов в моих представлениях. И мне нужно протестировать их все.
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.