Lingua-e
Python

¿Qué significa AssertionError?

← Errores

Un AssertionError se lanza cuando la condición de una sentencia assert se evalúa como False. Las sentencias assert están pensadas para verificaciones internas de cordura durante el desarrollo, no para validar entradas en código de producción. Pueden deshabilitarse globalmente ejecutando Python con el flag -O.

Por qué ocurre

  • Una condición assert que falla porque el programa alcanzó un estado inesperado.
  • Usar assert para validar entradas del usuario o datos externos en lugar de lanzar una excepción adecuada.
  • Una aserción de test que falla, por ejemplo en pytest cuando el valor real no coincide con el esperado.
  • Ejecutar código escrito con suposiciones que ya no se cumplen después de una refactorización.

Ejemplos

Python

Código que causa el error

def divide(a, b):
    assert b != 0, "Divisor must not be zero"
    return a / b

print(divide(10, 0))

Error en la terminal

Traceback (most recent call last):
  File "app.py", line 5, in <module>
    print(divide(10, 0))
  File "app.py", line 2, in divide
    assert b != 0, "Divisor must not be zero"
AssertionError: Divisor must not be zero

Cómo solucionarlo

En código de producción, reemplaza assert con comprobaciones if explícitas que lancen ValueError o TypeError. Reserva assert para invariantes internas y código de tests. Cuando veas este error en tests, lee el mensaje de la aserción para entender qué valor se esperaba frente a lo que se recibió.

Código corregido

def divide(a: float, b: float) -> float:
    if b == 0:
        raise ValueError("Divisor must not be zero")
    return a / b

try:
    print(divide(10, 0))
except ValueError as e:
    print(f"Error: {e}")

Errores relacionados

¿Listo para practicar tu inglés en el trabajo?

Lingua-e tiene ejercicios interactivos basados en conversaciones reales de developers: standups, code reviews, retrospectivas y más. Practica hasta que salga solo.

Prueba Lingua-e gratis