Yeda AI Tips · #084

English

pytest --lf: vuelve a ejecutar solo lo que falló

Deja de correr toda tu suite de tests después de cada corrección. Cuando tú (o tu agente de IA de programación) están en plena depuración, una suite de 2,000 tests donde fallan 3 significa que cada iteración desperdicia el 99.85% de su tiempo confirmando cosas que ya sabes. pytest trae la solución en dos caracteres: --lf.

El mecanismo: la caché entre ejecuciones de pytest

Cada ejecución de pytest guarda qué tests fallaron en un directorio .pytest_cache en la raíz de tu proyecto. Los flags de re-ejecución leen esa caché en la siguiente invocación:

FlagForma largaQué hace
--lf--last-failedRe-ejecuta solo los tests que fallaron la última vez
--ff--failed-firstEjecuta primero las fallas anteriores y luego el resto de la suite
--nf--new-firstEjecuta primero los tests nuevos (ordenados por fecha de modificación del archivo), luego el resto
-xSe detiene en la primera falla
--maxfail=NSe detiene después de N fallas
--sw--stepwiseSe detiene en la primera falla y en la siguiente ejecución retoma desde ese test

La combinación estrella para un ciclo de depuración corto:

pytest --lf -x

Re-ejecuta solo lo que se rompió y córtate en cuanto algo siga roto. Un ciclo rojo-a-verde en una suite de 4 minutos baja a segundos.

Por qué importa aún más con agentes de IA

Un agente de IA que depura tu código ejecuta los tests entre cada intento — a menudo de 5 a 15 iteraciones por bug. Si cada iteración corre la suite completa, el agente gasta la mayor parte del tiempo real (y de tu paciencia) en tests que ya pasan. Peor aún: los ciclos de retroalimentación largos empujan a los agentes a adivinar en lugar de verificar.

Pon el ciclo rápido en las instrucciones del agente (CLAUDE.md, AGENTS.md, system prompt — lo que tu herramienta lea):

Mientras corriges tests que fallan, itera con pytest --lf -x. Ejecuta la suite completa una vez al final para confirmar que nada más se rompió.

Esa última frase es clave: --lf solo re-ejecuta las fallas conocidas. Una corrección puede romper un test que pasaba en la ejecución anterior, y --lf nunca lo verá. Termina siempre con una ejecución completa.

Trucos avanzados

Reglas prácticas

Recursos

¿Estás construyendo una funcionalidad con IA? Yeda AI diseña, audita y entrega sistemas LLM de producción.

Habla con nosotros · Lee el blog