Как я могу проверить, перенаправляет ли get_absolute_url меня на желаемый URL после CreateView или нет - PullRequest
0 голосов
/ 07 июня 2019

Есть 3 модели, и у меня есть 3 CreateView для каждой.и я хочу проверить перенаправление после заполнения формы.

Я попытался написать 3 теста, но 2 из них столкнулись с ошибкой.Однако приложение работает так, как я хочу, в моем браузере.

у всех моделей есть этот метод get_absolute_url

def get_absolute_url(self):
        return reverse('foo', kwargs = {'pk':self.pk})

Три вида создания для вышеуказанных моделей в точности такие же, как этот

class foo(CreateView):
    form_class = bar
    template_name = 'xxx.html'

    def form_valid(self, form):
        form.instance.user = self.request.user
        return super().form_valid(form)

И этот тест работает

class Test_get_absolute_url(TestCase):
   def test_electronical_GAU(self):
       client = Client()
       create_electronical_ad_path = reverse_lazy('create_electronical_ad')
       User.objects.create(username = 'user1', password = 'TESTuSER1234')
       user = User.objects.get(username = 'user1')
       client.force_login(user)
       form = {'title':'title', 'price':123, 'location':20, 'tag':1,'description':'description'}
       response = client.post(create_electronical_ad_path, form)
       expected_url = reverse_lazy('electronical_detail', kwargs = {'pk':1})
       self.assertRedirects(response, expected_url)

Пока этого нет

def test_viechle_GAU(self):
        client = Client()
        create_viechle_ad_path = reverse_lazy('create_viechle_ad')
        User.objects.create(username = 'user1', password = 'TESTuSER1234')
        user = User.objects.get(username = 'user1')
        client.force_login(user)
        form = {'title':'title', 'price':123, 'location':20, 'produced':2019, 'color':'color', 'color': 'red' ,'description':'description'}
        response = client.post(create_viechle_ad_path, form)
        expected_url = reverse_lazy('viechle_detail', kwargs = {'pk':1})
        self.assertRedirects(response, expected_url)

Это ошибка

AssertionError: [] is not true : Response didn't redirect as expected: Response code was 200 (expected 302)

...