django重定向测试-断言错误:302!=200:x27;t检索内容:响应代码为302(预期为200)

django重定向测试-断言错误:302!=200:x27;t检索内容:响应代码为302(预期为200),django,unit-testing,django-testing,Django,Unit Testing,Django Testing,我无法让我的测试接受重定向工作。。。我一直收到以下错误“AssertionError:302!=200:无法检索内容:响应代码为302(预期为200)” 但是重定向是有效的 日志 请告诉我哪里出了问题。我尝试过使用assertRedirects,但仍然没有通过 test.py class EventTests(TestCase): def setUp(self): self.eventbooked = Event.objects.create(

我无法让我的测试接受重定向工作。。。我一直收到以下错误“AssertionError:302!=200:无法检索内容:响应代码为302(预期为200)”

但是重定向是有效的

日志

请告诉我哪里出了问题。我尝试过使用assertRedirects,但仍然没有通过

test.py

class EventTests(TestCase):

    def setUp(self):

        self.eventbooked = Event.objects.create(
            manage=self.user, 
            availability='Booked',
            start_time='2020-09-30 08:00:00+00:00',
            end_time='2020-09-30 17:00:00+00:00',
        )


    def test_event_update_redirect_if_booked_view(self):
        self.client.login(email='test_username@example.com', password='da_password')
        response = self.client.get(self.eventbooked.get_absolute_url_edit())
        self.assertEqual(response.status_code, 302)
        self.assertContains(response, 'Update Availability')
view.py-这是重定向发生的地方,对象被排除在外

class CalendarEventUpdate(LoginRequiredMixin, UpdateView):
    model= Event
    form_class = EventForm
    template_name='calendar_update_event_form.html'
    def get_queryset(self):
        return Event.objects.filter(manage=self.request.user).exclude(availability='Booked')

    def get(self, request, *args, **kwargs):
        try:
            return super(CalendarEventUpdate, self).get(request, *args, **kwargs)
        except Http404:
            return redirect(reverse('calendar_list'))
models.py

    def get_absolute_url_edit(self):
        return reverse('calendar_event_detail_update', args=[str(self.id)])

断言错误不是您期望的失败

  • self.assertEqual(response.status\u code,302)
    这一切都很顺利
  • self.assertContains(响应“更新可用性”)
    但此操作失败。您的响应是302响应,没有内容。在您给出的实际示例中:
    • “GET/calendar/5d8b6a0a-66b8-4909-bf8f-8616593d2663/update/HTTP/1.1”302
      ->您正在尝试测试此请求响应中的内容,而
    • “GET/calendar/list/HTTP/1.1”200
      ->。。。内容在对此请求的响应中
    def get_absolute_url_edit(self):
        return reverse('calendar_event_detail_update', args=[str(self.id)])