Como organizar e estruturar os testes unitários no Django - Parte III | Django Pro
Seguindo a nossa minissérie sobre testes unitários no Django, vamos para a terceira e última parte, não menos importante claro, vamos trabalhar nesse artigo os testes nos formulários da nossa aplicação.
Se você chegou diretamente neste post, saiba que existem mais dois deste, certamente a leitura deles o deixarão mais por dentro do assunto, mas sinta-se a vontade para continuar a leitura deste ou de todos eles.
Segue o link dos posts anteriores:
E nos formulários, o que podemos testar?
Bom, nos formulários do Django, é comum testarmos por exemplo, se o mesmo é válido ou inválido, mas repito, você pode testar outros comportamentos também, mas acredito que isso já é o suficiente.
Vamos testar, a título de exemplo, exatamente essas duas situações, o fluxo segue igualmente o percorrido nos outros dois posts, portanto, não é de se estranhar o que veremos a seguir, reforço que se você ainda não está a vontade com os testes que teremos aqui, faça a leitura dos artigos anteriores ou assista aos vídeos no Canal do YouTube.
Um pouco de código para alegrar vossa presença!
from ..forms import PessoaForm
class PessoaFormTestCase(TestCase):
def test_pessoa_form_valido(self):
form = PessoaForm(data={
'nome': "Francisco André",
'idade': 38
def test_pessoa_form_invalido(self):
form = PessoaForm(data={})
Simples né? Tudo no Django é de encher os olhos, confesso que sou evangelista mesmo desse framework! <3
Agora vamos às explicações
Veja que estou testando os dois estados do formulário, no primeiro teste estou "submetendo" o formulário com os dados necessários e atestando com o self.assertTrue() que o mesmo retornará válido. Nesse caso, você deve preencher o formulário com os atributos que são obrigatórios no modelo, simples assim!
Como já disse em outros posts, a switch de testes do Django tem diversos métodos para testar diversas situações do seu código. Vamos ao segundo teste.
No segundo teste a coisa não é muito diferente, com a excessão da intenção é claro, no primeiro queremos testar se o formulário preenchido retornará True, no segundo, queremos também saber que, se o formulário for submetido sem dado nenhum, será retornado False na validação, para isso, estou usando o self.assertFalse(), que garantirá se o que estou pensando é verdadeiro ou não!
Vale reforçar a sintaxe dos testes, em ambos os casos, instanciamos o formulário e passamos como parâmetro um dicionário, o Django se encarregará de fazer o unboxing (desempacotamento) dos dados neste dicionário.
O próximo passo é rodar os testes, pra fazer isso abra um terminal com seu ambiente virtual ativado e execute o comando ./manage.py test, dessa forma você rodará todos os testes existentes no projeto, mas para rodar os testes somente de uma app, especifique o nome da app Django no final, como em ./manage.py test core, por exemplo.
Bom, não entrei em detalhes sobre o que é e como funciona os testes unitários neste post, isso foi largamente abordado nos dois primeiros posts, sugiro fortemente a leitura deles (link no início do artigo) e para completar, nada melhor do que a documentação do Django, afirmo sem receio algum, que você conseguirá extrair bastante conhecimento dessa leitura.
Chegamos ao fim do artigo e da minissérie, ufa!!! Vou confessar uma coisa, dar um trabalho do caramba produzir esses materiais, é investido bastante tempo nisso, de pesquisa, leitura complementar, ciração enfim, eu espero de todo coração de tenha atendido a suas expectativas e se este material te ajudou, peço que comente, compartilhe, contribua adicionando mais algum item que deixei passar enfim, me ajuda a deixar esse assunto mais popular e acessível!
Um forte abraço, desejo muito sucesso na sua vida profissional e te vejo nos próximos posts!!! Fui!!!