Genera pruebas unitarias y luego verifícalas contra la especificación
Escribir la quinta prueba aburrida para una función es exactamente el trabajo que los desarrolladores delegan con gusto: la generación de pruebas es una de las tareas de IA principales en la encuesta de JetBrains, y los datos de Qodo muestran que los desarrolladores que usan IA para pruebas reportan una confianza mucho mayor en su suite (61% frente a 27%). El problema es que una prueba escrita solo a partir del código simplemente codifica lo que el código ya hace, errores incluidos.
Eres un ingeniero de pruebas experimentado. Escribe pruebas unitarias para la función que voy a pegar, siguiendo el estilo de pruebas de mi proyecto. Lenguaje y framework de pruebas: {{framework}} La función a probar: {{code}} El comportamiento previsto, en mis propias palabras (la especificación): {{spec}} Produce: 1. Una breve lista de comportamientos y casos límite que valga la pena probar, derivados del comportamiento previsto, no solo de lo que hace el código actualmente. Incluye valores límite, entradas vacías y nulas, rutas de error y cualquier invariante que haya descrito. 2. El código de las pruebas, una prueba claramente nombrada por comportamiento, siguiendo las convenciones de {{framework}}. 3. Una nota sobre cualquier comportamiento que no hayas podido probar porque la especificación es ambigua o una dependencia necesita mocking. Reglas: - Cuando el comportamiento real del código contradiga el comportamiento previsto que describí, escribe una prueba que FALLE que afirme el comportamiento previsto y márcala; no ajustes la prueba para que coincida con un posible error. - Usa solo el framework, las aserciones y las herramientas de mocking estándar de {{framework}}; no importes paquetes o ayudantes que no estés seguro de que existan. - No hagas afirmaciones sobre internos privados ni cadenas de log exactas que harían las pruebas frágiles.
Rellena tus datos y el prompt se actualiza al instante — luego cópialo.
Comportamientos a probar: descuento normal aplicado; descuento limitado para que el precio nunca sea negativo; precio negativo rechazado; cliente nulo manejado; pedido con cantidad cero. # pytest def test_applies_percentage_discount(): assert final_price(100, 0.2) == 80 def test_rejects_negative_price(): with pytest.raises(ValueError): final_price(-1, 0.2) Nota: tu especificación dice que el precio nunca debe bajar de cero, pero el código devuelve un valor negativo para descuentos superiores al 100%. Escribí test_price_never_negative como una prueba FALLIDA que afirma el comportamiento previsto. No pude probar el redondeo de moneda: la especificación no lo definía.
El flujo de trabajo completo
- Anota tú mismo primero el comportamiento previsto: la especificación, no solo lo que hace el código
- Genera las pruebas y luego lee cada una para confirmar que afirma lo que realmente quieres
- Ejecuta la suite; investiga cualquier fallo como un posible error real, no como una prueba para silenciar
- Agrega los casos que el modelo pasó por alto y elimina los frágiles o redundantes
Cuidado con
Las pruebas generadas solo a partir del código pasan por construcción y no demuestran nada: fijan el comportamiento actual, errores incluidos. Aporta el comportamiento previsto por separado y comprueba que cualquier prueba que falle señale un defecto real.
Verifica que cualquier biblioteca o ayudante de pruebas que importe el modelo realmente exista. Los estudios encontraron que aproximadamente uno de cada cinco paquetes sugeridos por IA es alucinado, y los atacantes registran esos nombres como malware (una técnica de cadena de suministro llamada slopsquatting): nunca agregues dependencias sugeridas por IA sin verificarlas.
Mantén el código propietario y los datos reales de clientes fuera de las herramientas de IA de consumo: usa fixtures ficticios, o un plan empresarial con el entrenamiento desactivado.
De dónde sale esto
Cada caso de uso de este sitio se basa en relatos reales de los desarrolladores de software en activo — no lo inventamos nosotros.
Más casos de uso de IA para los desarrolladores de software
Explica código desconocido antes de modificarlo
análisisUna primera revisión de tu propio diff antes de que lo vean humanos
análisisDepuración por pato de goma para un problema que no logras resolver
redacciónConvierte una decisión en un ADR o en la documentación que dejaste pendiente
comunicaciónRedacta mensajes de commit y descripciones de PR a partir de tu diff
← Los 6 casos de uso: cómo los desarrolladores de software usan la IA