Pular para o conteudo
MODULO 5.4

🧪 Testing Automatizado

pytest, fixtures, mocks, coverage e TDD com Claude Code. Testes sao a rede de seguranca que permite iteracao rapida sem medo de quebrar.

6
Topicos
~45
Minutos
5.3
Pre-requisito
Pratico
Tipo
Progresso:0%0 de 6
1

✅ pytest basics

pytest e o framework de testes padrao do ecossistema Python. Um arquivo test_*.py, funcoes que comecam com test_, e assert para verificar. Simples assim. Peca ao Claude Code: "escreve testes pytest para este modulo" e ele gera testes para cada funcao.

test_calculator.py
from calculator import add, divide

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

def test_divide():
    assert divide(10, 2) == 5.0

def test_divide_by_zero():
    import pytest
    with pytest.raises(ZeroDivisionError):
        divide(1, 0)

# Rodar: pytest -v

Em 1 frase: pytest -v = feedback instantaneo sobre o que funciona e o que quebrou.

2

🔩 Fixtures e conftest

Fixtures preparam o estado que seus testes precisam: um banco temporario, um client HTTP, dados de exemplo. O arquivo conftest.py compartilha fixtures entre todos os arquivos de teste do diretorio. Use @pytest.fixture e o parametro scope para controlar o ciclo de vida.

conftest.py
import pytest
from fastapi.testclient import TestClient
from main import app

@pytest.fixture
def client():
    return TestClient(app)

@pytest.fixture
def sample_item():
    return {"name": "Widget", "price": 9.99, "tags": ["new"]}

Em 1 frase: fixtures = setup reutilizavel; conftest.py = fixtures compartilhadas.

3

🎭 Mocks e patches

Mocks simulam dependencias externas. Se sua funcao chama uma API, o teste nao deve depender dessa API estar no ar. Use unittest.mock.patch para substituir a chamada real por um retorno controlado. Claude Code gera mocks precisos quando voce diz o que quer isolar.

Em 1 frase: mock.patch = testar seu codigo sem depender do mundo externo.

4

📊 Coverage report

Coverage mede quais linhas do seu codigo sao executadas pelos testes. Com pytest-cov, rode pytest --cov=src --cov-report=html e veja exatamente quais caminhos nao estao cobertos. Nao busque 100%, busque cobrir os caminhos criticos.

terminal
# Instalar
pip install pytest-cov

# Rodar com coverage
pytest --cov=src --cov-report=term-missing

# Gerar relatorio HTML
pytest --cov=src --cov-report=html
# Abrir htmlcov/index.html no browser

Em 1 frase: coverage mostra o que voce NAO testou; foque nos caminhos criticos.

5

🔴 TDD com Claude

TDD com IA e superpoder: voce escreve o teste (o "que"), Claude Code gera a implementacao (o "como"). Ciclo: Red (teste falha) -> Green (Claude implementa ate passar) -> Refactor (Claude limpa o codigo). Voce controla a especificacao; a IA faz o trabalho pesado.

Workflow TDD + Claude Code

1. Escreva o teste para o comportamento desejado

2. Rode pytest (vermelho: teste falha)

3. Peca ao Claude: "implemente para passar este teste"

4. Rode pytest (verde: teste passa)

5. Peca ao Claude: "refatore mantendo os testes verdes"

Em 1 frase: TDD + IA = voce define O QUE, Claude faz O COMO.

6

🔗 CI integration

Testes locais sao bons; testes no CI sao obrigatorios. GitHub Actions roda pytest em cada push/PR automaticamente. Se algum teste falha, o merge e bloqueado. Claude Code gera o workflow YAML completo: "cria um GitHub Actions que roda pytest com coverage".

.github/workflows/test.yml
name: Tests
on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: "3.12"
      - run: pip install -r requirements.txt
      - run: pytest --cov=src -v

Em 1 frase: CI = testes rodam automaticamente em cada push; ninguem quebra o que funciona.

🧾 Resumo do Modulo

pytest e o padrao para testes Python.
Fixtures preparam estado; conftest compartilha.
Mocks isolam dependencias externas.
Coverage mostra o que nao esta testado.
TDD + Claude = voce define, IA implementa.
CI roda testes automaticamente em cada push.

Proximo modulo:

5.5 — Deploy e Infraestrutura: Docker, cloud e monitoring.