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 em mesa de reunião analisando gráficos em um tablet
Entenda como funciona o mercado de investimentos e de renda variável ...
Mulheres sentadas utilizando celular
Abertura de Conta Digital – Software e Tecnologia ...
Homem vestido de terno utilizando um tablet e sorrindo
Parceria com empresas de tecnologia: por que é tão importante? ...