Guia de testing#
Meta de cobertura: >= 80% sobre el backend (coverage.py o pytest --cov). TODO: integrar reporte automatico en CI.
Piramide#
- Unitarias (servicios, utilidades, modelos Pydantic).
- Integracion (routers FastAPI + DB en memoria o Postgres local).
- End-to-end ligero (frontend web + backend local; smoke tests para pipelines).
Comandos#
Backend#
cd backend
python -m pytest tests -q
# Con coverage
python -m pytest tests -q --cov=backend --cov-report=term-missing
Smoke tests (previo a despliegue):
python scripts/smoke_test.py --base-url http://127.0.0.1:8096
# Incluye checks privados (requiere BINANCE_API_KEY/SECRET)
python scripts/smoke_test.py --base-url http://127.0.0.1:8096 --with-private
# Multi-entorno (demo/live/local)
python scripts/run_smoke_suite.py --target demo=http://127.0.0.1:8096 --target live=https://api.example.com
Scripts (CLI)#
- Anade pruebas parametrizadas para funciones reutilizables (
news_ingestor,goal_monitor). - Para scripts con efectos (import/export), usa fixtures temporales (
tmp_path) y mocks de requests.
Frontend web#
- Pendiente de definir al inicializar el proyecto Next.js (sugerido:
npm testpara unitarias y Playwright/Cypress para E2E).
Buenas practicas#
- Usa
TestClientde FastAPI + fixtures de SQLAlchemy para endpoints. - Mockea proveedores externos (Binance/news/LLM) usando
responsesopytest-httpx. - Registra datos sinteticos (
backend/tests/fixtures) para reproducir pipelines. - Documenta cualquier brecha de cobertura como
TODO: testdentro del codigo.
CI/CD#
docs.ymlejecutaramkdocs build+spectral lint; crear pipeline adicionaltests.ymlparapytest(backend) y tests del frontend.- Bloquea merges si cobertura < 80% (pendiente configurar).
- Considera agendar
scripts/smoke_test.pyen cada entorno despues de desplegar.