Python · Sección 10

Pruebas, depuración y calidad

Lectura de tracebacks, diagnóstico sistemático, pruebas con pytest, anotaciones de tipo, documentación y registros útiles.

3
lecciones
3
ejercicios resueltos
CONTENIDO ORIGINAL

Avanza en orden. Cada lección está redactada para Palta es Cool, utiliza ejemplos propios y termina con una actividad cuya respuesta puedes desplegar.

ANTES DE EMPEZAR

Ubícate antes de avanzar

01 / PUNTO DE PARTIDA

Conviene haber comprendido Objetos, clases y modelado.

02 / META OBSERVABLE

Al terminar deberías poder relacionar Tracebacks y depuración con Pruebas con pytest y resolver un caso nuevo.

03 / TIEMPO SUGERIDO

Reserva entre 75 y 120 minutos o divide el laboratorio en dos sesiones.

04 / PREPARA EL LABORATORIO

Instala Python 3 y utiliza IDLE o un editor como VS Code. Desde NumPy y Pandas trabaja dentro de un entorno virtual.

Abrir la guía de herramientas →
Diagnóstico rápido: ¿cómo se relacionan Tracebacks y depuración y Pruebas con pytest?

No necesitas acertar todavía. Escribe una hipótesis de dos líneas y compárala con tu respuesta al finalizar; si puedes corregirla y justificar el cambio, hubo aprendizaje.

Ruta guiada · 3 lecciones

Aprende el tema paso a paso

Pasarás de cambiar código al azar a localizar causas, definir resultados esperados y conservar cada corrección mediante pruebas repetibles.

Al terminar podrás
  • El traceback cuenta dónde terminó el error y cómo se llegó hasta allí
  • Una prueba prepara, ejecuta y comprueba un resultado observable
  • Tipos, documentación, estilo y registros reducen ambigüedad
01
Leer el fallo

El traceback cuenta dónde terminó el error y cómo se llegó hasta allí

La última línea identifica el tipo de excepción y su mensaje; las líneas anteriores muestran la cadena de llamadas. Depurar comienza reproduciendo el caso, reduciéndolo y encontrando la primera diferencia entre el valor esperado y el real, no corrigiendo la última línea a ciegas.

01

Reproduce el fallo con la misma entrada.

02

Lee el tipo, el mensaje y la primera línea propia relevante.

03

Inspecciona valores y formula una hipótesis antes de editar.

Comprueba lo aprendido · 01

¿Por qué except Exception: pass no es una solución al error?

Mostrar respuesta

Porque elimina la evidencia, permite que el programa continúe con un resultado desconocido y no define una respuesta útil. El error debe prevenirse, manejarse donde exista una decisión o propagarse con contexto.

02
Probar el comportamiento

Una prueba prepara, ejecuta y comprueba un resultado observable

Una prueba unitaria verifica una pieza pequeña y determinista. Los ejemplos ayudan a comprender; las pruebas permiten detectar regresiones. Conviene cubrir un caso normal, límites, valores inválidos y reglas especialmente costosas de romper.

01

Arrange: prepara entradas y resultado esperado.

02

Act: ejecuta una sola conducta importante.

03

Assert: compara el resultado o la excepción observable.

Comprueba lo aprendido · 02

¿Qué diferencia hay entre un ejemplo que funciona y una prueba de regresión?

Mostrar respuesta

La prueba declara automáticamente qué resultado debe mantenerse y falla si un cambio futuro lo altera. Un ejemplo observado una vez no protege ese comportamiento después.

03
Comunicar intención

Tipos, documentación, estilo y registros reducen ambigüedad

Las anotaciones de tipo ayudan al editor y a las personas, pero no validan por sí solas los datos durante la ejecución. Una docstring explica contrato y excepciones; un estilo consistente hace predecible la lectura; y logging registra eventos con niveles sin mezclar diagnóstico con la salida normal.

01

Los tipos expresan entradas y retorno esperados.

02

La docstring explica propósito, límites y errores relevantes.

03

logging diferencia información, advertencias y fallos.

Comprueba lo aprendido · 03

¿Es imposible llamar porcentaje("5", 10) porque la firma usa float?

Mostrar respuesta

No. Python conserva tipado dinámico y las anotaciones no convierten ni bloquean automáticamente los valores. Herramientas de análisis pueden advertir el problema, y la función debe validar cuando la entrada no es confiable.

Resumen de la sección

Tu recorrido en tres ideas

  1. El traceback cuenta dónde terminó el error y cómo se llegó hasta allí
  2. Una prueba prepara, ejecuta y comprueba un resultado observable
  3. Tipos, documentación, estilo y registros reducen ambigüedad
PROFUNDIZACIÓN / LABORATORIO GUIADO

Corrige una tarifa que falla exactamente en el límite

Integra especificación, traceback, caso mínimo, pruebas de frontera y evidencia de la corrección.

CASO

Un cálculo funciona casi siempre, pero cobra de más en 100 unidades y falla cuando el consumo llega como texto.

Procedimiento

  1. Declara resultados esperados para 99, 100, 101 y una entrada inválida.
  2. Reproduce y traza el primer punto donde el valor real diverge.
  3. Corrige una causa, ejecuta pytest y conserva los casos como regresión.

Evidencia mínima

  • Traceback o traza del caso mínimo.
  • Pruebas que fallan antes y pasan después.
  • Contrato con tipos, límites y excepción esperada.
Mostrar razonamiento modelo

El cambio correcto depende de la regla que incluye o excluye 100, no de probar operadores al azar. La conversión de texto ocurre en el límite de entrada; la función de cálculo recibe ya un número válido.

Para ir más lejos

¿Qué propiedad general podrías probar para cualquier consumo positivo?

CIERRE DE LA SECCIÓN

Comprueba que puedes usarlo

Antes de continuar, revisa estos tropiezos frecuentes y resuelve un caso sin copiar los ejemplos.

ERROR 01

Modificar varias líneas sin reproducir el fallo ni formular una hipótesis.

ERROR 02

Probar solamente el caso feliz y confundir cobertura con calidad de las comprobaciones.

DESAFÍO INTEGRADOR

Ahora hazlo sin guía

Recibe una función defectuosa de tarifas: reproduce el error, reduce el caso y crea pruebas para los límites antes de corregirla.

Mostrar pauta de corrección
Una respuesta sólida:
  • Identifica la primera divergencia entre valor esperado y real.
  • Las pruebas fallan antes del cambio y pasan después.
  • Incluye caso normal, fronteras, entrada inválida y contrato documentado.