Django test: Como fazer teste em uma pagina que precisa de login

44 views
Skip to first unread message

marcelo rocha

unread,
Mar 7, 2022, 11:31:35 PM3/7/22
to Django Brasil
Boa noite grupo

Quero criar um teste para uma pagina que em produção precisa de login para acessá-la:

def test_lista_tratores(self):
"""Testa a pagina de listagem dos tratores"""
resp = self.client.get(r('trator:lista_tratores'))
self.assertEqual(200, resp.status_code)

Resultado:
AssertionError: 200 != 302

Quando eu rodo no terminal aparece isso:
 <HttpResponseRedirect status_code=302, "text/html; charset=utf-8", url="/accounts/login/?next=/tratores/">

Fabio Ferreira da Silva

unread,
Mar 8, 2022, 7:05:18 AM3/8/22
to django...@googlegroups.com
Bom dia!

No setup do seu teste você tem que criar um usuário e logar antes de testar o get na página.

Att.

--
Você recebeu essa mensagem porque está inscrito no grupo "Django Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para django-brasi...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/django-brasil/c9d12006-2275-42e8-a4ee-3fe766da4118n%40googlegroups.com.

xico....@gmail.com

unread,
Mar 8, 2022, 8:25:28 AM3/8/22
to Django Brasil
Bom dia!

Certo, primeiramente vc precisa "logar" um usuário antes nesse "self.client" que vc está usando.
Encontrei esse trecho aqui no Stackoverflow que pode clarear melhor pra ti:


from django.contrib.auth.models import User
from django.core.urlresolvers import reverse
from django.test.client import Client
import unittest

class LoginTestCase(unittest.TestCase):
    def setUp(self):
        self.client = Client()
        self.user = User.objects.create_user('john', 'len...@thebeatles.com', 'johnpassword')

    def testLogin(self):
        self.client.login(username='john', password='johnpassword')
        response = self.client.get(reverse('testlogin-view'))
        self.assertEqual(response.status_code, 200)

marcelo rocha

unread,
Mar 9, 2022, 7:53:37 AM3/9/22
to Django Brasil
Obrigado! Funcionou!
Reply all
Reply to author
Forward
0 new messages