Saltar al contenido
K0lateral
Programación

Automatiza tests con Copilot y pre-commit hooks

· (banco local)

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
(banco local)

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.

Más sobre Programación

Ver todo →