Pytest: Testes em Python para Iniciantes

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

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_*.py ou *_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                    

Recommendations