Как проверить содержание ответа в тесте просмотра - PullRequest
0 голосов
/ 27 мая 2019

Я хочу проверить, содержат ли объекты ответа метку с определенным значением. У меня есть представление, которое добавляет значение для определенной метки, если выполняются условия. Конечно, это работает, потому что я проверил вручную, но хочу написать тест для этого.

Я пытался использовать assertContain и assertIn, но он не работает, или я использую это неправильно:

class TaskIndexAPI(APITestCase):
    def setUp(self):
        user = User.objects.create_user(
            username='TestUser',
            password='test1234'
        )
        Task.objects.create(
            name='Task for test',
            creator=user,
            status='Unauthenticated',
            completion_date=date(2019, 4, 9),
            description='This is description for test purposes',
            warning_if_delayed=''
        )

    def test_check_if_delayed(self):
        response = self.client.get(reverse('tasks_index'), format='json')
        self.assertContains(response, 'This task is delayed')

    def test_check_if_delayed(self):
        response = self.client.get(reverse('tasks_index'), format='json')
        self.assertIn('This task is delayed', response)

Это фрагмент представления, который добавляет значение для метки объекта:

class UserTasksAPIView(APIView):
    permission_classes = (permissions.IsAuthenticated,)

    def get_queryset(self):
        return Task.objects.filter(creator=self.request.user)

    def check_if_tasks_are_delayed(self, queryset):
        checked_tasks = queryset
        for task in checked_tasks:
            if task.completion_date <= date.today() and status == 'Unfinished':
                task.warning_if_delayed = 'This task is delayed'
                task.save()
            else:
                task.warning_if_delayed = ''
                task.save()
            return checked_tasks

    def get(self, request):
        user_tasks = self.get_queryset()
        tasks = self.check_if_tasks_are_delayed(user_tasks)
        serializer = UserTasksSerializer(tasks, many=True)
        return Response(serializer.data)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...