Link Search Menu Expand Document

Assert en Python

A continuación te explicamos como hacer uso del assert en Python, pero te recomendamos que antes leas otros de nuestros posts sobre excepciones y el uso de try, except y finally.

Un assert se podría traducir en Español como una comprobación. Se trata por lo tanto de la verificación de una condición determinada, que de no ser cierta, lanzará la excepción AssertionError. Veamos un ejemplo.

assert(1==2)
# Se lanza la excepción AssertionError

Es decir, si el contenido existente dentro del assert es igual a False, se lanzará la excepción. Se podría conseguir el mismo resultado haciendo lo siguiente. Pero el uso de assert() resulta más cómodo.

if condicion:
    raise AssertionError()

Podemos también añadir un texto con información relevante acerca del assert().

assert False, "El assert falló"

También se puede hacer uso del assert() sin usar paréntesis como se muestra a continuación.

x = "CursosPython"
assert x == "CursosPython"

assert() en testing

La función assert() puede ser también muy útil para escribir tests unitarios o units tests. Veamos un ejemplo.

Imagínate que tienes una función calcula_media() que como su nombre indica calcula la media de un conjunto de números.

def calcula_media(lista):
    return sum(lista)/len(lista)

En el mundo de la programación es muy importante probar o testear el software, para asegurarse de que está libre de errores. Gracias al uso de assert() podemos realizar estas comprobaciones de manera automática.

assert(calcula_media([5, 10, 7.5]) == 7.5)
assert(calcula_media([4, 8]) == 6)

Por lo que si hacemos que estas comprobaciones sean parte de nuestro código, podríamos proteger nuestra función, asegurándonos de que nadie la “rompa”.

assert() en funciones

Puede resultar útil usar assert() cuando queremos realizar alguna comprobación, como podría ser dentro de una función. En el siguiente ejemplo tenemos una función suma() que sólo suma las variables si son números enteros.

# Funcion suma de variables enteras
def suma(a, b):
    assert(type(a) == int)
    assert(type(b) == int)
    return a+b

# Error, ya que las variables no son int
suma(3.0, 5.0)

# Ok, los argumentos son int
suma(3, 5)

assert() con clases

Otro ejemplo podría verificar que un objeto pertenece a una clase determinada.

class MiClase():
    pass

class MiOtraClase():
    pass

mi_objeto = MiClase()
mi_otro_objeto = MiOtraClase()

# Ok
assert(isinstance(mi_objeto, MiClase))

# Ok
assert(isinstance(mi_otro_objeto, MiOtraClase))

# Error, mi_objeto no pertenece a MiOtraClase
assert(isinstance(mi_objeto, MiOtraClase))

# Error, mi_otro_objeto no pertenece a MiClase
assert(isinstance(mi_otro_objeto, MiClase))