O Que É o pytest? O Framework de Testes Python Explicado
O pytest é o framework de testes Python mais popular: ele encontra e executa seus testes, dá uma saída de falha legível e escala de uma checagem de uma linha a grandes suítes.
O pytest torna a escrita de testes Python de baixo atrito. Um teste é apenas uma função cujo nome começa com "test", usando simples instruções assert, e o pytest as descobre e executa com relatórios ricos. Seu sistema de fixtures e o ecossistema de plugins o tornam a escolha padrão para a maioria dos projetos Python.
O que é o pytest
O pytest é um framework de testes e um runner de linha de comando para Python. Ele descobre automaticamente arquivos e funções de teste, reescreve as instruções assert para produzir mensagens de falha detalhadas e oferece suporte a fixtures, parametrização e um grande ecossistema de plugins (cobertura, execução paralela, mocking e mais).
Fixtures e asserções
Em vez de métodos de setup e teardown, o pytest usa fixtures: funções que fornecem dependências de teste (uma conexão de banco de dados, um diretório temporário) e são injetadas por nome nos testes. As asserções usam a simples palavra-chave "assert", e o pytest inspeciona a expressão para mostrar exatamente o que diferiu quando ela falha.
Um exemplo de teste
Um teste é uma função comum com uma asserção.
# test_math.py
def add(a, b):
return a + b
def test_add():
assert add(2, 3) == 5Papel no CI/CD
O pytest é a etapa de teste na maioria dos pipelines Python. Ele retorna um código de saída diferente de zero em qualquer falha, o que faz o job de CI falhar. Plugins como o pytest-xdist rodam testes em paralelo para encurtar a suíte, e o pytest pode emitir JUnit XML para dashboards de CI. Suítes grandes são um gargalo frequente de CI; rodá-las em runners gerenciados mais rápidos e dividi-las entre workers mantém o feedback rápido.
Alternativas
O unittest é o framework da biblioteca padrão, com um estilo xUnit baseado em classes. O nose2 é um sucessor do antigo nose. O pytest domina por sua sintaxe concisa, suas fixtures poderosas e a amplitude de seu ecossistema de plugins.
Principais conclusões
- O pytest descobre e executa testes Python com simples instruções assert.
- Fixtures injetam dependências de teste; plugins adicionam cobertura e paralelismo.
- Ele encerra com código diferente de zero em caso de falha, o que faz o job de CI falhar.