Nie mogę dostać mojego testu, aby zaakceptować dzieło przekierowania ... Ciągle otrzymuję ten błąd "AssertionError: 302! = 200: Nie można pobrać treści: Kod odpowiedzi był 302 (oczekiwany 200)"

Ale przekierowanie działa

Kłody

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

Niektórzy radzę, gdzie idę źle. Próbowałem użyć assertredirects, ale to nadal nie przechodzi

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')

Widok.py - Tutaj dzieje się przekierowanie, to obiekt jest wykluczony.

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)])
-1
Blind Rabit 11 październik 2020, 17:08

1 odpowiedź

Najlepsza odpowiedź

Błąd twierdzenia nie jest twoim oczekiwaniem.

  • self.assertEqual(response.status_code, 302) Przechodzi to dobrze.
  • self.assertContains(response, 'Update Availability') To jednak nie powiedzie się. Twoja odpowiedź to 302 odpowiedź, która nie ma treści. W rzeczywistym przykładzie dałeś:
    • {x1}} - & gt; Próbujesz przetestować treść w odpowiedzi na ten wniosek, podczas gdy ...
    • {x2}} - & gt; ... Treść jest w odpowiedzi na ten wniosek.
1
Clepsyd 11 październik 2020, 14:19