python-testing
Faz seu agente criar testes para código Python. Ele usa ferramentas como pytest para garantir que o código funcione como esperado, cobrindo diferentes cenários.
O que ela faz
Esta ferramenta ajuda você a escrever testes para seu código Python. Ela usa uma técnica chamada TDD (Desenvolvimento Guiado por Testes) e ferramentas como pytest para garantir que seu código funcione como esperado.
Quando usar
- ✓Ao escrever novo código Python.
- ✓Ao criar um conjunto de testes para um projeto.
- ✓Ao verificar a cobertura de testes do seu código.
Exemplo do que pedir para a IA
“Como posso testar uma função que adiciona dois números usando TDD?”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
Você escreve um teste que falha primeiro, depois escreve o código mínimo para fazê-lo passar e, por fim, refatora o código. Ferramentas como pytest ajudam a organizar e executar esses testes.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add affaan-m/ECC --skill python-testingOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/affaan-m/ECC/main/pi/core/skills/python-testing/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Padrões de Teste em Python
Estratégias abrangentes de teste para aplicações Python usando pytest, metodologia TDD e melhores práticas.
Quando Ativar
- Escrevendo novo código Python (siga TDD: vermelho, verde, refatorar)
- Projetando suítes de teste para projetos Python
- Revisando a cobertura de teste Python
- Configurando infraestrutura de teste
Filosofia Central de Teste
Desenvolvimento Orientado a Testes (TDD)
Sempre siga o ciclo TDD:
- VERMELHO: Escreva um teste que falha para o comportamento desejado
- VERDE: Escreva o código mínimo para fazer o teste passar
- REFACTORAR: Melhore o código mantendo os testes verdes
# Step 1: Write failing test (RED)
def test_add_numbers():
result = add(2, 3)
assert result == 5
# Step 2: Write minimal implementation (GREEN)
def add(a, b):
return a + b
# Step 3: Refactor if needed (REFACTOR)
Requisitos de Cobertura
- Meta: 80%+ de cobertura de código
- Caminhos críticos: 100% de cobertura exigida
- Use
pytest --covpara medir a cobertura
pytest --cov=mypackage --cov-report=term-missing --cov-report=html
Fundamentos do pytest
Estrutura Básica de Teste
import pytest
def test_addition():
"""Test basic addition."""
assert 2 + 2 == 4
def test_string_uppercase():
"""Test string uppercasing."""
text = "hello"
assert text.upper() == "HELLO"
def test_list_append():
"""Test list append."""
items = [1, 2, 3]
items.append(4)
assert 4 in items
assert len(items) == 4
Asserções
# Equality
assert result == expected
# Inequality
assert result != unexpected
# Truthiness
assert result # Truthy
assert not result # Falsy
assert result is True # Exactly True
assert result is False # Exactly False
assert result is None # Exactly None
# Membership
assert item in collection
assert item not in collection
# Comparisons
assert result > 0
assert 0 <= result <= 100
# Type checking
assert isinstance(result, str)
# Exception testing (preferred approach)
with pytest.raises(ValueError):
raise ValueError("error message")
# Check exception message
with pytest.raises(ValueError, match="invalid input"):
raise ValueError("invalid input provided")
# Check exception attributes
with pytest.raises(ValueError) as exc_info:
raise ValueError("error message")
assert str(exc_info.value) == "error message"
Fixtures
Uso Básico de Fixture
import pytest
@pytest.fixture
def sample_data():
"""Fixture providing sample data."""
return {"name": "Alice", "age": 30}
def test_sample_data(sample_data):
"""Test using the fixture."""
assert sample_data["name"] == "Alice"
assert sample_data["age"] == 30
Fixture com Setup/Teardown
@pytest.fixture
def database():
"""Fixture with setup and teardown."""
# Setup
db = Database(":memory:")
db.create_tables()
db.insert_test_data()
yield db # Provide to test
# Teardown
db.close()
def test_database_query(database):
"""Test database operations."""
result = database.query("SELECT * FROM users")
assert len(result) > 0
Escopos de Fixture
# Function scope (default) - runs for each test
@pytest.fixture
def temp_file():
with open("temp.txt", "w") as f:
yield f
os.remove("temp.txt")
# Module scope - runs once per module
@pytest.fixture(scope="module")
def module_db():
db = Database(":memory:")
db.create_tables()
yield db
db.close()
# Session scope - runs once per test session
@pytest.fixture(scope="session")
def shared_resource():
resource = ExpensiveResource()
yield resource
resource.cleanup()
Fixture com Parâmetros
@pytest.fixture(params=[1, 2, 3])
def number(request):
"""Parameterized fixture."""
return request.param
def test_numbers(number):
"""Test runs 3 times, once for each parameter."""
assert number > 0
Usando Múltiplas Fixtures
@pytest.fixture
def user():
return User(id=1, name="Alice")
@pytest.fixture
def admin():
return User(id=2, name="Admin", role="admin")
def test_user_admin_interaction(user, admin):
"""Test using multiple fixtures."""
assert admin.can_manage(user)
Fixtures Autouse
@pytest.fixture(autouse=True)
def reset_config():
"""Executa automaticamente antes de cada teste."""
Config.reset()
yield
Config.cleanup()
def test_without_fixture_call():
# reset_config executa automaticamente
…
Perguntas frequentes
O que é TDD?
TDD significa Desenvolvimento Guiado por Testes. É uma abordagem onde você escreve um teste antes de escrever o código real, garantindo que o código atenda aos requisitos.
O que é pytest?
Pytest é uma ferramenta popular para escrever e executar testes em Python. Ela oferece recursos como fixtures e parametrização para tornar os testes mais eficientes.
O que é cobertura de código?
Cobertura de código mede a porcentagem do seu código que é executada pelos seus testes. Um objetivo comum é ter pelo menos 80% de cobertura.
Detalhes
Descrição original do autor
Python testing strategies using pytest, TDD methodology, fixtures, mocking, parametrization, and coverage requirements. Use when writing pytest tests — fixtures, mocks, parametrization, or coverage.
repo: affaan-m/ECC
Popularidade
- Estrelas no GitHub
- 280 mil
- Posição no ranking
- #104
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
accessibility
Ajuda seu agente a criar interfaces que todos possam usar. Garante que sites e aplicativos funcionem bem para pessoas com deficiência, como cegos ou com mobilidade reduzida.
affaan-m/ECC
agent-architecture-audit
Faz seu agente verificar se tudo está funcionando corretamente. Ele encontra e conserta problemas em sistemas de IA, garantindo que funcionem como esperado.
affaan-m/ECC
agent-eval
Ajuda seu agente a comparar diferentes ferramentas de programação de IA. Ele mede qual é mais rápido, barato e confiável para realizar tarefas específicas.
affaan-m/ECC
agent-harness-construction
Faz seu agente entender melhor como realizar tarefas. Ele otimiza as ferramentas e instruções que o agente usa para aumentar suas chances de sucesso.
affaan-m/ECC
Skills parecidas
webapp-testing
Permite testar aplicações web locais, verificar funcionalidades e depurar o comportamento da interface. Captura screenshots e logs do navegador.
anthropics/skills
ponytail-audit
Faz uma auditoria completa do código. Ele encontra bugs, falhas de segurança, código lento e sugere o que remover ou melhorar.
DietrichGebert/ponytail
ponytail-review
Revisa a qualidade de uma mudança no código. Verifica se a lógica está correta, se é segura, rápida e se todas as linhas são necessárias.
DietrichGebert/ponytail