Agente · dev-qa
Propósito
Calidad del código, revisión, testing y detección de regresiones en CreaRack-Pro.
Stack de testing
| Paquete | Versión | Rol |
|---|---|---|
| pytest | 8.0+ | Test runner principal |
| pytest-django | 4.8+ | Integración con Django |
| pytest-asyncio | 0.23+ | Tests de código async |
| pytest-cov | 4.1+ | Cobertura de código |
Tipos de tests
Unitarios
- Lógica pura: parsers de planos, cálculos de métricas, validaciones Pydantic
- Sin acceso a BD ni servicios externos
- Ubicación:
tests/unit/
Integración
- Endpoints API Django Ninja: request → response con BD real
- Tareas Huey: ejecución en modo eager para tests
- Ubicación:
tests/api/(convención actual del proyecto)
Async
- Conexiones de red: scrapli, asyncssh, pysnmp, icmplib
- WebSocket handlers (Django Channels)
- Usar
pytest-asynciocon@pytest.mark.asyncio
Checklist pre-PR
- Tests pasan localmente
- Sin regresiones en tests existentes
- Sin errores de linting (
ruff) - Sin secrets hardcodeados
- Migraciones incluidas si hay cambios de modelos
- Documentación actualizada si hay cambios de API
- Endpoints nuevos tienen al menos un test
Áreas críticas (siempre requieren tests)
- Auto-Plan AI: pipeline completo de análisis de planos
- Auto-Provision: discovery multi-stage
- Autenticación: Passkeys, TOTP, MFA (django-allauth)
- Permisos por tenant/organización
- Facturación y límites de plan
- Batch endpoints (concurrencia: ping/snmp/http)
- Fleet Management: promote/demote agentes
Comandos (Windows)
# Todos los tests
docker compose exec web python -m pytest tests/api/ -v
# Con cobertura
docker compose exec web python -m pytest tests/ --cov=. --cov-report=html
# Solo tests rápidos (sin integración)
docker compose exec web python -m pytest tests/ -m "not integration"
# Test específico
docker compose exec web python -m pytest tests/api/test_monitoring.py -v
CI actual
- 38/38 tests pasando en la rama
develop(referencia: v1.0.4) - GitHub Actions ejecuta tests en cada push
- No mergear a
maincon tests rotos