Saltar a contenido

Guia de testing#

Meta de cobertura: >= 80% sobre el backend (coverage.py o pytest --cov). TODO: integrar reporte automatico en CI.

Piramide#

  1. Unitarias (servicios, utilidades, modelos Pydantic).
  2. Integracion (routers FastAPI + DB en memoria o Postgres local).
  3. 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 test para unitarias y Playwright/Cypress para E2E).

Buenas practicas#

  • Usa TestClient de FastAPI + fixtures de SQLAlchemy para endpoints.
  • Mockea proveedores externos (Binance/news/LLM) usando responses o pytest-httpx.
  • Registra datos sinteticos (backend/tests/fixtures) para reproducir pipelines.
  • Documenta cualquier brecha de cobertura como TODO: test dentro del codigo.

CI/CD#

  • docs.yml ejecutara mkdocs build + spectral lint; crear pipeline adicional tests.yml para pytest (backend) y tests del frontend.
  • Bloquea merges si cobertura < 80% (pendiente configurar).
  • Considera agendar scripts/smoke_test.py en cada entorno despues de desplegar.