Organizando e Executando Testes com pytest
Deslize para mostrar o menu
Quando você deseja escrever códigos de teste limpos, expressivos e de fácil manutenção em Python, o pytest é uma escolha popular. Diferente do framework embutido unittest, que segue uma estrutura rígida baseada em classes e exige métodos de asserção específicos como self.assertEqual, o pytest permite o uso de instruções assert padrão do Python dentro de funções simples. Isso reduz drasticamente o código repetitivo e torna seus testes mais concisos, já que não é mais necessário envolver a lógica em hierarquias complexas de classes ou memorizar dezenas de nomes de asserções específicas do framework apenas para verificar um resultado simples.
Um dos recursos mais poderosos do pytest é seu sistema de descoberta de testes. Simplesmente executando pytest no diretório do seu projeto, ele encontrará automaticamente todos os arquivos que correspondem ao padrão test_*.py ou *_test.py e executará todas as funções dentro desses arquivos que começam com test_. Isso significa que você não precisa especificar manualmente quais testes executar - o pytest faz isso por você.
Outra vantagem importante é o uso de fixtures. Fixtures cuidam da preparação e limpeza dos recursos necessários para seus testes, como arquivos temporários ou conexões com bancos de dados, de uma forma fácil de reutilizar. Basta decorar uma função com @pytest.fixture e então solicitá-la como entrada nas suas funções de teste. Isso mantém seu código modular e evita a repetição da mesma lógica de configuração.
Para começar a usar o pytest, primeiro é necessário instalá-lo. Utilize o seguinte comando no seu terminal:
pip install pytest
Isso fará o download e a instalação da versão mais recente do pytest, permitindo que você comece a escrever e executar seus testes imediatamente.
Veja a seguir uma demonstração prática de como utilizá-lo para escrever testes baseados em funções e definir fixtures reutilizáveis.
import pytest
# A simple function to test
def add(a, b):
return a + b
# Define a fixture that provides test data
@pytest.fixture
def sample_numbers():
return (3, 5)
# Test function using the fixture
def test_add_with_fixture(sample_numbers):
a, b = sample_numbers
result = add(a, b)
assert result == 8
# Another simple test function
def test_add_negative_numbers():
assert add(-2, -4) == -6
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo