Automatiza tests con Copilot y pre-commit hooks
Aprende a usar GitHub Copilot para generar tests y pre-commit hooks que automaticen tu pipeline. Evita bugs comunes con prompts efectivos.
Automatiza tests con Copilot y pre-commit hooks
Mira colega, si estás hasta las narices de que los tests se te acumulen o de que los bugs cuelen por distracciones, tengo la combinación perfecta: GitHub Copilot + pre-commit hooks. Aquí no hay teoría, solo práctica. Te voy a soltar tres prompts que te ahorrarán horas de curro y te blindarán el código.
El problema real
Los tests manuales son una putada. Te olvidas de correrlos, te saltas el git commit y luego te toca debuggear a mediodía. Con los hooks de pre-commit y Copilot, automatizas todo. El hook se ejecuta antes de cada commit, y Copilot te genera tests sobre la marcha. Listo, cero excusas.
Prompt 1: Generar tests unitarios con Copilot
Pega esto en tu editor con Copilot activado. Úsalo en un archivo de test vacío o justo después de una función:
Prompt: Genera tests unitarios para la función "validar_email" usando pytest.
Incluye casos: email correcto, sin arroba, sin dominio, vacío, con caracteres extraños.
Usa parametrize para simplificar.
Este prompt le dice a Copilot que te genere tests con cobertura de casos límite. No te olvides de tener pytest instalado en tu requirements.txt. El hook lo ejecutará automáticamente.
Prompt 2: Hook de pre-commit para ejecutar tests automáticos
Crea un archivo .pre-commit-config.yaml en la raíz de tu repo. Copilot te puede ayudar a armarlo, pero usa este prompt dentro del archivo:
Prompt: Configura un hook de pre-commit que ejecute pytest solo en archivos modificados.
Añade también ruff para linting y black para formateo.
Versión: pre-commit-hooks 4.4.0
Copilot te completará algo como:
repos:
- repo: https://github.com/pycqa/pytest
rev: 7.4.0
hooks:
- id: pytest
args: ["--cov=.", "--cov-fail-under=80"]
- repo: https://github.com/psf/black
rev: 23.3.0
hooks:
- id: black
Ajusta el --cov-fail-under según tu nivel de exigencia. Yo pongo 80% como mínimo, que es realista.
Prompt 3: Evitar bugs comunes con validaciones automáticas
¿Cansado de que te cuelen passwords en texto plano o archivos sensibles? Este prompt te genera un hook que lo detecta:
Prompt: Crea un hook de pre-commit que detecte tokens, passwords o claves API en los archivos staged.
Usa regex para buscar patrones como "password", "secret", "api_key".
Si encuentra algo, que falle el commit.
Pégalo dentro de la sección hooks de tu pre-commit-config.yaml. Copilot te sugerirá algo como:
- repo: https://github.com/Yelp/detect-secrets
rev: v1.4.0
hooks:
- id: detect-secrets
args: ['--baseline', '.secrets.baseline']
Ojo, ejecuta detect-secrets scan la primera vez para generar el baseline, o te va a petar todo.
Cómo lo integras todo
- Instala pre-commit: pip install pre-commit
- Crea el archivo de configuración con los prompts de arriba
- Ejecuta pre-commit install en tu repo
- Copilot te generará los tests en tiempo real mientras editas
A partir de aquí, cada git commit ejecutará los tests, linting y detección de secretos. Si falla algo, no hay commit. Así de simple.
El truco final
Si trabajas en equipo, comparte el .pre-commit-config.yaml en el repo. Así todos usan el mismo pipeline. Y si Copilot se atasca, dale el prompt en español como los que te puse. Funciona igual, tío, no te rayes.
Y tú, ¿qué usas para que no se te cuelen bugs en producción? Cuéntamelo en los comentarios.


