Как передать значения для тестирования view, которое написано на Django Rest Framework?
Вопрос, как протестировать функцию delete, которая принимает параметры через post запрос. Возможно использовать в тестовом случае self.data, где указывать основные параметры, которые приходят post-запросом и необходимы для его удаления?
def delete(self, request):
post = PostCard.objects.get(id=request.data['post_id'])
author = request.data['owner_id']
if author == request.user.id:
post.delete()
return Response(status=status.HTTP_204_NO_CONTENT)
else:
return Response(status=status.HTTP_400_BAD_REQUEST)
Ответы (1 шт):
Автор решения: Necko
→ Ссылка
Как вариант использовать такой кейс (офф. документация):
from rest_framework.test import APITestCase, URLPatternsTestCase
from django.urls import reverse
class UserTestModule(APITestCase, URLPatternsTestCase):
def test_can_user_delete_post(self):
delete_path = reverse('delete_post') #Здесь delte_post это name вашего url
user_request = self.client.delete(delete_path, data={....}, format='json'
#Далее добавляете необходимые вам проверки с помощью self.assertEqual
Хочу также заметить что, получение id объекта из request.data, это устаревшая модель реализации CRUD в REST, лучше передавать его в url, как параметр. Например post-crud/<int:pk>/, а в view определить функцию get_object, для получения модели. Проверку на права доступа request.user к модели, лучше выносить в файл permissions.py. Документация для permissions