Programación con Python para Datos · Programación

Manejo de errores y testing

Gestionar excepciones con try/except y escribir pruebas unitarias para detectar fallos de forma temprana.

Manejo de errores y testing

Ilustracion de Python para datos: DataFrame, graficas y arrays de NumPy.
Python para ciencia de datos: NumPy, pandas y manipulacion de datos.

Mapa conceptual

Fallar con elegancia Los errores son datos. Quien los captura, los registra y los prueba tiene un programa que sobrevive al mundo real: archivos que faltan, datos sucios, servicios caídos.

Qué es una excepción

Una excepción es un evento que interrumpe el flujo normal cuando algo no cuadra: división por cero, archivo inexistente, tipo de dato inesperado. Python la «lanza» y, si nadie la captura, el programa termina.

try y except

  1. En try, colocas el código que puede fallar.
  2. En except, atrapas el tipo concreto de error y decides qué hacer.
  3. else corre si no hubo excepción; finally corre siempre (para cerrar archivos, liberar recursos).

Atrapa poco y específico

Un «except» que atrapa todo y no hace nada oculta bugs: el programa parece funcionar pero tapa la verdad. Captura el tipo exacto que esperas manejar y deja que los demás suban. Silenciar es peor que fallar.

Lanzar errores propios

Con raise puedes abortar con un mensaje claro cuando un dato viola lo esperado: mejor una excepción temprana y elocuente que un cálculo corrupto más adelante. Fail fast: detecta el problema donde nace.

Cada bloque cubre un momento distinto del intento.
BloqueCuándo correUso típico
trysiempre intenta el código protegidooperación que puede fallar
exceptsi hay una excepción capturadamanejar un tipo de error
elsesi NO hubo excepciónproseguir con lo bueno
finallysiempre, haya o no errorlimpiar recursos

¿Cuál es un buen uso de try/except?

Por qué probar

Las pruebas son la red de seguridad: verifican que tu código hace lo que debe hoy, y avisan si un cambio de mañana lo rompe. Sin pruebas, refactorizar es caminar sobre el hielo.

assert y unittest

Pruebas unitarias

Una prueba unitaria toma una pieza pequeña del código (una función), le da entradas conocidas y comprueba la salida esperada. Rápidas, autónomas y repetibles: se corren con cada cambio.

Silenciar una excepción sin registrarla es una práctica recomendada para evitar molestias.

El ciclo rojo-verde

En desarrollo con pruebas (TDD), primero escribes una prueba que falla (rojo), luego implementas lo mínimo para que pase (verde) y después limpias. Convierte el «funciona, no sé por qué» en algo verificable.

Errores frecuentes

Ordena las piezas de un programa confiable:

1
2
3
4

pytest
Framework de pruebas: fijar comportamiento y correr suites.

Escribe mentalmente una función que lea un archivo y calcule su media. Señala qué excepciones pueden surgir, cómo las manejarías y qué tres casos probarías con una unidad de test.

Documentacion pandas
Guia de referencia para manipulacion de datos en Python.