Verificando condiciones con assert() y su relaci贸n con las excepciones

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))

¡Deja un comentario!

avatar
  Subscribe  
Notify of