Pytest: faça testes e gere relatórios rapidamente

Bruno Zago

25 outubro 2018 - 10:47 | Atualizado em 29 março 2023 - 17:31

Pessoa utilizando computador exibindo códigos de programação

O pytest é um framework usado para a criação de testes de uma maneira mais dinâmica e rápida. Seus testes devem ser desenvolvidos em python (todos os arquivos devem ser salvos com a extensão .py), o que faz com que o código fique menor, seja mais legível e fácil de dar manutenção. Pode-se gerar diversos tipos de relatório (html, csv, xml) apenas passando alguns parâmetros na execução da suíte de testes.

1 – Instalação

1.1 – Instalando o python no windows

1.1.1 – Baixar e instalar executável da linguagem python (recomendado 3.6.5 ~)

Imagem ilustrando o botão de download do python

1.1.2 – Lembre-se de marcar a opção de adicionar o python ao path do windows

Tela de instalação do programa Python

1.1.3 – Verificar se o python foi instalado e adicionado ao path do windows com sucesso.

Abra um terminal e digite “python -V

Tela cmd com comando python -V para exibir a versão do mesmo

1.1.4 – Baixe e instale o PIP (baixar o arquivo get-pip.py e executá-lo no terminal com o comando python get-pip.py)

Siga os passos da imagem abaixo:

Tela com instruções de instalação do pip.py

(Lembre-se de acessar a pasta que você salvou o get-pip.py através do terminal, antes de executá-lo)

Agora verifique se o pip foi instalado corretamente com o comando pip –version

Comando pip --version sendo executado em CMD

1.1.5 – Instalar o pytest com o comando pip install pytest pytest-html (Veja o exemplo de um computador com os pacotes já instalados).

Imagem de uma página do site da telecom OI

2 – Introdução ao pytest

2.1 – Primeiro exemplo

Neste tutorial, vamos criar todos os testes com funções declaradas da forma test_nome_do_teste. (A palavra test deve aparecer no começo do nome da função para que o pytest detecte os testes sozinho)

tela de código fonte

Queremos verificar o comportamento de uma função, e, para isso, precisamos saber qual a saída correta para uma determinada entrada. Segue o exemplo de uma simples análise de um método que retorna a soma de dois elementos:

Tela de código fonte efetuando cálculo

O segundo método faz a comparação entre o primeiro parâmetro (o número 5) e o retorno da função de soma e não retorna uma exceção quando a comparação é feita com sucesso. (Salve esse programa acima em um arquivo .py com o nome de sua preferência).

2.2 – Executando o primeiro teste.

O arquivo acima foi salvo com o nome test_assert1.py para fins de demonstração. Execute em um terminal o comando pytest nomedoarquivo.py, o resultado deve ser algo parecido com:

Tela de cmd com código de aplicação python

O framework detectou apenas um método de teste (por conta da nomenclatura) e fez a comparação descrita na função test_soma. Como a comparação entre o número 5 e o retorno da função de soma com os parâmetros 3 e 2 não retornou uma exceção do tipo AssertionError, o teste foi aceito e passou.

2.3 – Forçando um erro para analisar a saída

Vamos modificar o assert do nosso arquivo test_assert1.py alterando o valor 5 para 6 e verificar a saída no terminal.

Tela com código fonte de cálculos básicos

Código fonte de python

2.4 – Executando vários testes

Vamos atualizar nosso arquivo test_assert1.py deixando ele com três funções e três testes referentes às funções:

Código fonte com várias operações matemáticas

Agora, execute novamente o comando pytest test_assert1.py e veja que o framwork entendeu que existem três testes presentes no arquivo (devido à nomenclatura que demos).

Tela de cmd com código de aplicação python

2.5 – Executando testes em vários arquivos ao mesmo tempo

Crie dois arquivos na pasta raiz do projeto: o primeiro (setup.cfg), deve instruir ao pytest apenas arquivos que comecem com o nome test_ dentro de uma pasta chamada tests e que ao fim da execução, gere um relatório html. O segundo (setup.py) deve informar os requerimentos da suíte de testes.

Tela de código fonte em python

Código fonte pytest

Reaproveite o código do arquivo test_assert1.py criando um diretório com o nome tests,  salve cada função e seu respectivo teste em três arquivos (.py) diferentes de acordo com a imagem abaixo: test_assert1.py, test_assert2.py e test_assert3.py.

Tela de código fonte efetuando cálculo

Tela de um código fonte de cálculo em python

Pessoas analisando gráficos de uma corretora

Execute apenas o comando pytest no terminal (lembre-se que o terminal deve estar uma hierarquia acima da pasta tests para que o pytest encontre automaticamente esse diretório e seus testes).

Tela de código fonte python em cmd

Verifique o report.html gerado.

tela de teste de uma aplicação em python

Gostou do conteúdo e quer conhecer mais sobre python e pytest? Basta acessar os links https://docs.pytest.org/en/latest/ e https://www.python.org/doc/.

Recomendados para você

Pessoa digitando em comptuador
Usar framework Adobe PhoneGap ou desenvolver app de forma nativa? ...
Pessoas em sala de escritório apertando as mãos
Quais habilidades são comuns entre os líderes de sucesso? ...
Mulher em praça pública utilizando computador
Dicas para execução de testes em API ...