testcontainers
SKILL.md
testcontainers
Testcontainers levanta instancias reales de PostgreSQL, Redis y MinIO como contenedores Docker durante los tests de integración. Esto elimina los mocks frágiles y garantiza que el código funciona con las dependencias reales.
When to use
Usar en los tests de integración donde se necesita verificar comportamiento real: que los logs se persisten correctamente en PostgreSQL, que el rate limiter funciona con Redis real, que las imágenes se suben y se recuperan de MinIO.
Instructions
- Instalar:
pip install testcontainers[postgresql,redis] - Fixture de PostgreSQL en
conftest.py:import pytest from testcontainers.postgres import PostgresContainer @pytest.fixture(scope="session") def postgres_container(): with PostgresContainer("postgres:16-alpine") as pg: yield pg.get_connection_url().replace("postgresql://", "postgresql+asyncpg://") - Fixture de Redis:
from testcontainers.redis import RedisContainer @pytest.fixture(scope="session") def redis_container(): with RedisContainer("redis:7-alpine") as r: yield f"redis://{r.get_container_host_ip()}:{r.get_exposed_port(6379)}" - Usar en tests: pasar las URLs de conexión como variables de entorno al setup de la app.
scope="session"reutiliza el mismo contenedor para todos los tests de la sesión — evita recrear el contenedor en cada test (lento).- Las migraciones Alembic deben ejecutarse contra el contenedor antes de los tests:
alembic upgrade head.
Notes
- Testcontainers requiere Docker disponible en el entorno de CI — usar GitHub Actions con
runs-on: ubuntu-latestque incluye Docker. - Para tests de modelos ML, no usar Testcontainers para el model server — mockear las respuestas de inferencia en tests unitarios y tener tests de integración separados que requieran GPU.
- El contenedor se destruye automáticamente al finalizar la fixture — no hay cleanup manual necesario.
Weekly Installs
1
Repository
davidcastagnetoa/skillsFirst Seen
10 days ago
Security Audits
Installed on
mcpjam1
claude-code1
replit1
junie1
windsurf1
zencoder1