skills/workflow/test-runner/SKILL.md
Execução e análise de testes automatizados
npx skillsauth add lucasbiason/cursor-multiagent-system test-runnerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Ativar quando:
# pytest (preferido)
pytest -v --tb=short
# unittest
python -m unittest discover
# Com cobertura
pytest --cov=src --cov-report=term-missing
# Jest
npm test
# Vitest
npx vitest run
# Com cobertura
npm test -- --coverage
go test ./... -v
go test ./... -cover
| Flag | Uso |
|------|-----|
| -v | Verbose |
| -x | Para no primeiro erro |
| --lf | Roda últimos falhando |
| -k "nome" | Filtra por nome |
| --cov=src | Cobertura |
| --tb=short | Traceback curto |
| -n auto | Paralelo (pytest-xdist) |
| Flag | Uso |
|------|-----|
| --verbose | Detalhado |
| --coverage | Cobertura |
| --watch | Watch mode |
| -t "nome" | Filtra por nome |
| --bail | Para no primeiro erro |
## Test Report
### Sumário
| Métrica | Valor |
|---------|-------|
| Total | 42 |
| Passou | 40 ✅ |
| Falhou | 2 ❌ |
| Skipped | 0 ⏭️ |
| Cobertura | 78% |
### Testes Falhando
#### `test_user_creation`
**Arquivo:** `tests/test_user.py:45`
AssertionError: Expected 201, got 400
**Causa provável:** Validação de email falhando
---
### Cobertura por Arquivo
| Arquivo | Cobertura |
|---------|-----------|
| `src/auth.py` | 95% |
| `src/user.py` | 82% |
| `src/utils.py` | 45% ⚠️ |
### Arquivos Sem Cobertura
- `src/legacy.py`
- `src/migrations/`
### Recomendações
1. Adicionar testes para `src/utils.py`
2. Investigar `test_user_creation`
# Esperado vs Obtido
assert result == expected
# Verificar: lógica, dados de teste, estado
# Módulo não encontrado
# Verificar: PYTHONPATH, venv, dependências
# Teste demorou demais
# Verificar: mocks, I/O, loops infinitos
# Setup/teardown falhou
# Verificar: database, arquivos, conexões
# pytest com cobertura detalhada por arquivo
pytest --cov=src --cov-report=term-missing --cov-report=html
# Verificar arquivos abaixo de 90%
pytest --cov=src --cov-report=term-missing | grep -E "TOTAL|^\w+.*\s+\d+%" | awk '$NF < 90'
def test_should_do_something():
# Arrange
data = setup_data()
# Act
result = function_under_test(data)
# Assert
assert result == expected
# Bom
test_user_creation_with_valid_email_returns_201
test_login_with_wrong_password_returns_401
# Ruim
test_1
test_user
Usar pytest para todos os testes:
A estrutura dos testes deve espelhar a estrutura da aplicação:
app/
├── users/
│ ├── controllers/
│ │ └── user_controller.py
│ └── models/
│ └── user.py
tests/
├── users/
│ ├── controllers/
│ │ └── test_user_controller.py
│ └── models/
│ └── test_user.py
Regra: Quando procurar um teste de um arquivo, ele deve estar na mesma estrutura relativa.
Todos os acessos externos devem ser mockados:
Banco de dados:
Sistema de fila (Redis, RabbitMQ, etc.):
Cache (Redis, Memcached, etc.):
APIs externas:
responses ou httpx para mockar requisições HTTPSistema de arquivos:
tempfile ou mockar operações de arquivoArquivos de teste:
test_*.py ou *_test.pytest_user_controller.pyFunções de teste:
test_*test_create_user_success()Descritivo:
test_create_user_with_valid_data_success()test_create_user_with_invalid_email_fails()Cada teste deve ter:
Exemplo:
def test_create_user_success():
# arrange
user_data = {"email": "[email protected]", "name": "Test User"}
# act
result = create_user(user_data)
# assert
assert result.email == "[email protected]"
assert result.id is not None
Usar fixtures para setup comum:
conftest.pyExemplo:
@pytest.fixture
def user_data():
return {"email": "[email protected]", "name": "Test User"}
@pytest.fixture
def mock_redis(monkeypatch):
mock_redis = Mock()
monkeypatch.setattr("app.utils.cache_system.CacheSystem", mock_redis)
return mock_redis
Templates obrigatórios:
core/templates/django/pytest.inicore/templates/django/conftest.pyUsar sempre os templates como base.
Testes unitários:
Testes de integração:
Priorizar testes unitários (maioria).
conftest.py para setup comumdevelopment
Gera resumos didáticos extensos e estruturados de aulas/cursos para cards do Notion. Use ao resumir aulas, apostilas, transcrições ou materiais de estudo para incluir no corpo do card (não apenas no campo Descrição), com flashcards, exemplos de código, diagramas Mermaid, mapa conceitual e perguntas de reforço.
development
Padroniza documentação existente no formato canônico Spec-Driven. Remove duplicação e melhora rastreabilidade.
development
Processo universal e repetível para criar especificações a partir de qualquer input (texto, docs, código). Usado em Plan mode.
data-ai
--- name: scripts-logs-organization description: Regras obrigatórias para organização de scripts temporários, logs, feedbacks e planejamentos triggers: [script, log, feedback, relatorio, planejamento, temporario, @temp, analise, resumo, daily] --- # Organização de Scripts e Logs **Regras obrigatórias para scripts temporários, logs, feedbacks e planejamentos.** **Última Atualização:** 2026-01-23 --- ## ⚠️ REGRA CRÍTICA **NUNCA criar pastas `@temp/` em `config/` ou na raiz do projeto.** Tod