Como organizar e estruturar os testes unitários no Django – Parte III

Testes Unitários no Django - Parte III

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.

Recapitulando

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:
Primeira parte
Segunda parte

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 django.test import TestCase

from ..forms import PessoaForm


class PessoaFormTestCase(TestCase):

    def test_pessoa_form_valido(self):
        form = PessoaForm(data={
            'nome': "Francisco André",
            'idade': 38
        })
        self.assertTrue(form.is_valid())

    def test_pessoa_form_invalido(self):
        form = PessoaForm(data={})
        self.assertFalse(form.is_valid())

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.

Recomendação de leitura

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.

Segue o link:
https://docs.djangoproject.com/en/3.0/topics/testing/

Conclusão

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!!!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *