Tempo estimado de leitura: 3 minutos
[RASC] Introdução pytest
Objetivos dessa aula:
- Configurar nosso ambiente com as bibliotecas
- Introduzir e instalar o pytest
- O funcionamento básico do CLI do pytest
- Escrever nossos primeiros testes
Sempre que trabalhamos com testes, uma boa forma de organizar as coisas e também manter um pouco de sanidade mental, é essencial usar um framework dedicado a isso.
Existem várias opções nesse ecossistema:
unittest: A biblioteca nativa do python para criar, gerenciar e executar testesbehave: Um framework completo de testes para criar cenários usando Gherkinpytest: A biblioteca mais tradicional e completa do ecossistema- Outras: como
Doctest,Robot,testify,Mamba,Ward,Radish, ...
Todas são extremamente funcionais e realizam as tarefas a sua maneira. Durante esse nosso período junto vou dar preferencia ao pytest. Por ser uma das bibliotecas mais sólidas e com larga adoção dentro da comunidade de python em geral.
[WIP] O pytest
[TODO]: Explicações iniciais sobre o pytest.
- O pytest se define como1:
- "O framework pytest facilita a escrita de testes pequenos e legíveis, e pode ser dimensionado para suportar testes funcionais complexos para aplicações e bibliotecas."
Instalação
- Lembre de fazer isso em ambiente virtual :)
Primeiros testes com pytest
Existem várias formas de criar testes usando o pytest. A mais tradicional e simples é criando funções de teste. Existe uma regrinha básica para criar as funções:
- Ela deve ter um nome iniciado com
test_
Como por exemplo:
Dessa forma, dentro de um arquivo python, o pytest consegue saber quais funções são testes ou não.
Nosso primeiro teste
Nos baseando nas funções e nos testes que criamos na aula passada, podemos englobar a nossa querida função inverte_string:
| aula_02.py | |
|---|---|
E podemos montar o mesmo teste, mas dessa vez dentro da função do pytest:
| aula_02.py | |
|---|---|
O testrunner
TODO: Explicações básicas sobre testrunners
TODO: Explicações básicas sobre o CLI do pytest
Executando o teste
O resultado:
============================= test session starts ==============================
platform linux -- Python 3.13.7, pytest-8.4.2, pluggy-1.6.0
rootdir: /home/dunossauro/git/pytest-do-zero
configfile: pyproject.toml
plugins: xonsh-0.20.0, hypothesis-6.148.2, typeguard-4.4.4
collected 1 item
aulas/codigos_das_aulas/aula_02.py . [100%]
============================== 1 passed in 0.47s ===============================
-
Parágrafo inicial da documentação oficial. https://docs.pytest.org/ ↩