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

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

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 ~)

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

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

Abra um terminal e digite “python -V

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:

(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

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).

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)

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:

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:

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.

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:

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).

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.

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.

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).

Verifique o report.html gerado.

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/.

Gostou? Compartilhe:

Marlon de Alencar Rocha

Marlon de Alencar Rocha

Tem 28 anos e nasceu em Crato, no Ceará. Trabalha na Cedro Technologies como Analista de Testes. Possui interesse na área de QA, desenvolvimento, robótica e jogos de PC (CS:GO e Dota2).