Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Python intermedio para IA, Unidad 9 — Testing y depuración, 9.2 — Introducción al testing ·

assert

Introducción al testing

¿Por qué importa testear tu código?

En el mundo de la inteligencia artificial y la ciencia de datos, es crucial garantizar que nuestro código funcione correctamente. Los errores en el proceso de desarrollo pueden llevar a resultados inexactos o incluso fallos catastróficos en los modelos de aprendizaje automático. El testing no solo ayuda a identificar estos errores temprano en el ciclo de vida del proyecto, sino que también mejora la confianza y la calidad del código.

En este artículo, exploraremos cómo usar assert como una herramienta fundamental para introducirnos al mundo del testing en Python. Vamos a ver cómo funciona assert, cuándos es útil y algunos errores comunes a evitar.

Explicación principal con ejemplos

assert es una declaración especial de Python que permite verificar si una condición se cumple, y si no lo hace, genera un error. Es una forma concisa e inequívoca de asegurarte que ciertas condiciones se cumplen en tu código.

Ejemplo básico:

def dividir(a, b):
    assert b != 0, "No puedes dividir por cero"
    return a / b

resultado = dividir(10, 2)  # Funciona correctamente
print(resultado)           # Salida: 5.0

try:
    resultado = dividir(10, 0)
except AssertionError as e:
    print(e)                 # Salida: No puedes dividir por cero

Ejemplo con múltiples assert:

def calcular_promedio(notas):
    assert len(notas) > 0, "No hay notas para calcular el promedio"
    assert all(isinstance(nota, (int, float)) for nota in notas), "Todas las notas deben ser números"

    suma = sum(notas)
    return suma / len(notas)

promedio = calcular_promedio([85, 92])       # Funciona correctamente
print(promedio)                              # Salida: 88.5

try:
    promedio = calcular_promedio([])
except AssertionError as e:
    print(e)                                   # Salida: No hay notas para calcular el promedio

try:
    promedio = calcular_promedio([85, "92"])
except AssertionError as e:
    print(e)                                   # Salida: Todas las notas deben ser números

Errores típicos / trampas

  1. Uso incorrecto de assert

A menudo se confunde el uso de assert con una declaración condicional regular (if). assert debe usarse para verificar condiciones que deberían ser verdaderas y nunca deberían fallar durante la ejecución normal del programa.

  1. Dependencia excesiva en assert

Aunque assert es útil, no debería ser la única forma de probar tu código. Deberías complementarlo con otros métodos como el uso de unittest, pytest, o incluso pruebas manuales.

  1. Ignorar los errores en producción

Algunos desarrolladores olvidan desactivar los assert en un entorno de producción, lo cual puede generar errores innecesarios y afectar la velocidad del programa.

Checklist accionable

  1. Identifica las condiciones críticas: Determine cuáles son las condiciones que deben cumplirse para que tu código funcione correctamente.
  2. Escribe assert para cada condición crítica: Coloca un assert para cada una de estas condiciones en la función correspondiente.
  3. Comprueba todos los casos posibles: Asegúrate de probar tanto las condiciones correctas como las incorrectas para cubrir todos los escenarios posibles.
  4. Desactiva assert en producción: Antes de enviar tu código a producción, desactiva todos los assert para evitar errores innecesarios y mejorar el rendimiento del programa.
  5. Revisa frecuentemente tus pruebas: Asegúrate de revisar regularmente las pruebas que has escrito y actualizarlas según sea necesario.

Cierre: Siguientes pasos

  • Explora otros métodos de testing: assert es solo el comienzo, hay muchas otras herramientas y técnicas para probar tu código. Considera aprender sobre frameworks como unittest, pytest, o incluso pruebas manuales.
  • Implementa un enfoque incremental: Asegúrate de probar cada parte del programa que escribas conforme lo hagas.
  • Mantén tus pruebas actualizadas: Las pruebas deben adaptarse a las necesidades y cambios del proyecto.

Prueba y depuración son fundamentales para el desarrollo de software de calidad, especialmente en proyectos de inteligencia artificial. Usar assert como una herramienta adicional puede ayudarte a mejorar la confiabilidad y precisión de tu código.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).