django redirect test - AssertionError: 302 != 200 : Couldn't retrieve content: Response code was 302 (expected 200)
django redirect test - AssertionError: 302 != 200 : Couldn't retrieve content: Response code was 302 (expected 200)
我无法让我的测试接受重定向工作...我不断收到此错误“AssertionError:302!= 200:无法检索内容:响应代码为 302(预期为 200)”
但是重定向有效
日志
web_1 | [11/Oct/2020 12:41:33] "GET /calendar/5d8b6a0a-66b8-4909-bf8f-8616593d2663/update/ HTTP/1.1" 302 0
web_1 | [11/Oct/2020 12:41:33] "GET /calendar/list/ HTTP/1.1" 200 4076
请告诉我哪里出错了。我试过使用 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_code, 302)
这样就好了。
self.assertContains(response, 'Update Availability')
然而,这失败了。您的响应是没有内容的 302 响应。在您给出的实际示例中:
"GET /calendar/5d8b6a0a-66b8-4909-bf8f-8616593d2663/update/ HTTP/1.1" 302
-> 您正在尝试测试此请求的响应中的内容,而...
"GET /calendar/list/ HTTP/1.1" 200
-> ...内容在对此请求的响应中。
我无法让我的测试接受重定向工作...我不断收到此错误“AssertionError:302!= 200:无法检索内容:响应代码为 302(预期为 200)”
但是重定向有效
日志
web_1 | [11/Oct/2020 12:41:33] "GET /calendar/5d8b6a0a-66b8-4909-bf8f-8616593d2663/update/ HTTP/1.1" 302 0
web_1 | [11/Oct/2020 12:41:33] "GET /calendar/list/ HTTP/1.1" 200 4076
请告诉我哪里出错了。我试过使用 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_code, 302)
这样就好了。self.assertContains(response, 'Update Availability')
然而,这失败了。您的响应是没有内容的 302 响应。在您给出的实际示例中:"GET /calendar/5d8b6a0a-66b8-4909-bf8f-8616593d2663/update/ HTTP/1.1" 302
-> 您正在尝试测试此请求的响应中的内容,而..."GET /calendar/list/ HTTP/1.1" 200
-> ...内容在对此请求的响应中。