Testing
Backend (pytest)
Sección titulada «Backend (pytest)»Fichero de configuración: backend/pyproject.toml.
[tool.pytest.ini_options]asyncio_mode = "auto"testpaths = ["tests"]pythonpath = ["."]Ejecutar tests
Sección titulada «Ejecutar tests»Con Docker:
docker compose exec backend pytest -qCon uv:
cd backenduv run pytest -qEjecutar un test específico
Sección titulada «Ejecutar un test específico»cd backenduv run pytest backend/tests/test_budget_recalc_conceptos.py -qTests relevantes por módulo
Sección titulada «Tests relevantes por módulo»| Módulo | Tests |
|---|---|
| Presupuestos | backend/tests/test_budget_api_endpoints.py, backend/tests/test_budget_recalc.py, backend/tests/test_budget_clone.py |
| Mediciones | backend/tests/test_budget_measurements.py |
| Descompuesto | backend/tests/test_budget_recalc_legacy.py |
| Variables | backend/tests/test_budget_variables.py |
| Certificaciones | backend/tests/test_certification_presto_fields.py, backend/tests/test_certification_presto_create.py |
| BC3 | backend/tests/test_bc3_parser.py, backend/tests/test_bc3_calc.py, backend/tests/test_bc3_import_ajuste.py, backend/tests/test_bc3_titulo_desclarga.py |
| Auth / roles | backend/tests/test_auth.py, backend/tests/test_roles.py |
| Gantt | backend/tests/test_gantt.py, backend/tests/test_gantt_scheduler.py, backend/tests/test_gantt_drag_drop.py, backend/tests/test_gantt_constraints.py |
Frontend (vitest)
Sección titulada «Frontend (vitest)»Configuración: frontend/vitest.config.ts.
Ejecutar tests
Sección titulada «Ejecutar tests»cd frontendnpm run test:runCon cobertura:
npm run test:coverageEstructura de tests
Sección titulada «Estructura de tests»frontend/src/tests/frontend/src/hooks/__tests__/frontend/src/components/**/__tests__/frontend/src/utils/__tests__/Tests relevantes
Sección titulada «Tests relevantes»frontend/src/tests/budgets/*.test.tsxfrontend/src/tests/certifications/*.test.tsxfrontend/src/tests/shell/*.test.tsx
E2E (Playwright)
Sección titulada «E2E (Playwright)»También hay tests E2E con Playwright:
cd frontendnpm run test:e2eContra producción:
npm run test:e2e:prodConvenciones
Sección titulada «Convenciones»- Cada test debe ser independiente (no depender de estado de otros tests).
- Usar fixtures y helpers compartidos (
backend/tests/conftest.py,frontend/src/test/setup.ts). - Tests de backend con base de datos transaccional y rollback.
- Mock de servicios externos (Redis, correo, etc.) cuando sea necesario.
Calidad
Sección titulada «Calidad»ruff check apppara lint del backend.npm run lintpara lint del frontend.- Se ejecutan en CI/CD solo al pushear a
main.