Skip to content
Latchkey

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.

A minimal pytest test
# test_math.py
def add(a, b):
    return a + b

def test_add():
    assert add(2, 3) == 5

Papel 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.

Guias relacionados