Pytest: Guia Completo de Testes em Python
Introdução ao Pytest
Testar é uma parte essencial do desenvolvimento de software. Sem testes de qualidade, fica difícil garantir a confiabilidade do código e sua estabilidade ao fazer alterações. O Pytest é um framework moderno, poderoso e fácil de usar para automação de testes em Python, que simplifica bastante o processo de escrever e executar testes.
O Pytest conquistou a comunidade de desenvolvedores graças à sua sintaxe concisa, recursos avançados de extensão e um sistema robusto de fixtures. Ele supera significativamente o módulo padrão unittest em termos de usabilidade e velocidade de desenvolvimento de testes.
Instalação e Configuração do Pytest
Instalação via pip
pip install pytest
Verificando a Instalação
pytest --version
Primeiro Teste Simples
Crie um arquivo test_example.py:
def test_addition():
assert 2 + 2 == 4
def test_string_operations():
text = "Hello, World!"
assert "Hello" in text
assert len(text) == 13
Executando os Testes
pytest
O Pytest detecta automaticamente todos os arquivos e funções de teste que seguem as convenções de nomenclatura.
Estrutura e Organização dos Testes
Convenções de Nomenclatura
O Pytest usa as seguintes convenções para detecção automática de testes:
- Arquivos de teste:
test_*.pyou*_test.py - Funções de teste:
def test_...() - Classes de teste:
class Test...(sem método__init__) - Métodos de teste em classes:
def test_...()
Organizando a Estrutura de Testes
project/
├── src/
│ ├── calculator.py
│ └── utils.py
├── tests/
│ ├── test_calculator.py
│ ├── test_utils.py
│ └── conftest.py
└── pytest.ini
Executando Testes com Diferentes Parâmetros
# Executar todos os testes
pytest
# Executar testes em um diretório específico
pytest tests/
# Executar um arquivo específico
pytest test_calculator.py
# Executar um teste específico
pytest test_calculator.py::test_add
# Executar testes em uma classe
pytest test_calculator.py::TestCalculator
# Executar um método específico de uma classe
pytest test_calculator.py::TestCalculator::test_multiply
Fundamentos para Escrever Testes
Usando assert para Verificações
O Pytest usa o operador padrão assert do Python para verificar condições:
def test_basic_assertions():
# Verificação de igualdade
assert 2 + 2 == 4
# Verificação de desigualdade
assert 3 * 3 != 8
# Verificação de pertinência
assert "Python" in "Python testing"
# Verificação de tipos
assert isinstance(42, int)
# Verificação de verdadeiro
assert bool([1, 2, 3])
# Verificação de falso
assert not bool([])
Testando Exceções
import pytest
def divide(a, b):
if b == 0:
raise ValueError("Divisão por zero não é permitida")
return a / b
def test_division_by_zero():
with pytest.raises(ValueError):
divide(10, 0)
def test_exception_message():
with pytest.raises(ValueError, match="Divisão por zero"):
divide(10, 0)
def test_exception_type():
with pytest.raises(ZeroDivisionError):
1 / 0
Organizando Testes em Classes
class TestCalculator:
def test_addition(self):
assert 2 + 3 == 5
def test_subtraction(s Também na biblioteca
Aprendizado de Máquina em Swift: bibliotecas para iOS/macOS
Envio de email em TypeScript: bibliotecas e exemplos de código
Pacotes Spatie para PHP: guia completo com exemplos
Processamento de Imagens em Node.js: redimensionar e cortar com Sharp