Conhecendo o Básico do Pytest para escrita de testes em Python

Introdução

Testes é uma técnica de engenharia de software que visa investigar a qualidade do resultado esperado com o resultado encontrado. Todas as linguagens de programação tem algum Framework que auxilia a criação e validação da sua aplicação. Nesse tutorial o foco não será na qualidade dos testes e sim abordar o básico de que se precisa conhecer do pytest para criação execução dos testes.

Instalação

pip install pytest

Executar o pytest

pytest.exe

Executar todos os testes de uma pasta

pytest.exe nomedapasta

Executar um arquivo de teste em específico

pytest.exe nomedapasta/arquivo.py

Executar um método específico em um arquivo de teste

pytest.exe nomedapasta/arquivo.py::nome do método

Criação do primeiro Teste

Por convenção da documentação do pytest, ele recomenda criar uma pasta chamada “tests”, para armazenar os seus testes. Para o pytest encontrar os testes, todos os métodos e arquivos de teste, precisa começar com test ou terminar com test.

Por exemplo se criarmos um método tes2tar_soma, como o código acima não respeita o padrão de nomenclatura o pytest não encontrará o teste.

Vamos agora alterar o método de tes2tar_soma para test_soma.

Veja que agora o pytest consegue executar encontrar e executar um teste.

Criação de Suíte de Teste

As vezes é necessário criar um suíte de testes, para conseguir executar um grupo de testes em específico, para isso vamos criar um arquivo de teste

mark_soma_test.py com 2 testes e irei mostrar como separar os testes em suítes para executar uma suíte em específico.

Se executarmos o teste dessa forma o pytest encontrará 2 teste para executar.

Sendo assim iremos criar uma configuração de markers do pytest para conseguir criar as nossas suítes. Iremos primeiramente criar um arquivo chamado pytest.ini com a seguinte configuração:

Veja que criamos uma marker chamado soma e outro chamado somagrupo2, agora precisamos alterar o código da nossa classe para executar adicionar esses marcadores.

Iremos executar apenas os testes, cujo marcador chama-se soma:

pytest.exe tests/mark_soma_test.py -m soma

Veja que ele encontrou 2 testes e executou apenas 1.

Criação de Fixtures

Em determinados casos, precisamos de alguma configuração ou dependência, seja disponibilizada para o teste e o método de sua criação seja executado antes da execução do método. Para isso iremos utilizar o decorator fixtures do pytest. Criaremos o arquivo fixtures_test.py para demonstrar sua utilização.

Veja que nesse código temos o método define_value é uma fixture que irá retornar o valor utilizado para validação. A fixture que um método irá preccisar, é passada via parâmetro para o método.

Veja que se executar o teste ele é retorna com sucesso.

Conclusão

Basicamente foi abordado apenas um pouco dos recursos que o pytest disponibiliza, quando for criar os testes da sua aplicação caso necessário precisará visualizar a documentação da ferramenta para conseguir abordar todos os cenários necessários para seu testes.

Links

https://docs.pytest.org/en/stable/

--

--

--

Desenvolvedor Senior da empresa Imagem, MBA Arquitetura de Software

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Filipe Motta

Filipe Motta

Desenvolvedor Senior da empresa Imagem, MBA Arquitetura de Software

More from Medium

Pytest in Python…

Python decorators are static

Pytest in Python