Assert en Python

infograf铆a assert en python

 

La sentencia assert en Python es una declaraci贸n simple muy 煤til en tareas de correcci贸n de errores y depuraci贸n.

Qu茅 son las aserciones

Las aserciones son declaraciones que afirman o declaran un hecho en un programa.

Las assertPythonson simplemente expresiones booleanas que verifican si las condiciones devuelven verdadero o no. Si es cierto, el programa no hace nada y pasa a la siguiente l铆nea de c贸digo. Sin embargo, si es falso, el programa se detiene y arroja un error.

Se utiliza como herramienta de depuraci贸n, ya que detiene el programa tan pronto como se produce un error y muestra en qu茅 punto del error del programa se ha producido.

diagrama de flujo assert python
Diagrama de Flujo sobre aserciones de www.programiz.com

Beneficios de programar con aserciones

La programaci贸n con aserciones es una gran idea porque proporcionan verificaciones de suposiciones en tiempo de ejecuci贸n que de otro modo se habr铆an puesto en comentarios de c贸digo

Los comentarios a menudo se desactualizan y no se sincronizan con la base del c贸digo. Las declaraciones de assert聽no pueden quedar desactualizadas, porque s铆 lo hacen, devolver谩n un error y se ver谩 obligado a actualizarlas.

Usos de assert en Python

Las declaraciones de asserten Python tienen dos usos principales, detectar errores en nuestro c贸digo聽y en fase de testeo o pruebas.

Detectar errores de programaci贸n con聽assert

Incluir en tu programa una especie de 芦red de seguridad禄 ante posibles errores del programador. Imagina que llamas a una funci贸n de la que sabes que jam谩s retorna un valor negativo, y usas su respuesta como parte de otra operaci贸n:

n = foo()
return 1 + n

La funci贸n foo() jam谩s retornar谩 un n煤mero negativo y si lo hiciera estar铆a mal. Pero no te f铆as del todo, pues quiz谩s esa funci贸n no ha sido escrita por ti. Soluci贸n usando assert聽en Python:

n = foo()
assert n >= 0        # Asegurarse de que es positivo
return n + 1

Mientras efectivamente n sea positivo, es como si no hubi茅ramos a帽adido el assert, pues no hace nada. Pero si alguna vez fuese negativo, estamos tranquilos pues el assert interrumpir谩 el programa y volcar谩 una traza se帽alando el punto del programa en que el assert聽fall贸.

Podemos incluir un mensaje que formar铆a parte de la excepci贸n que se generar铆a cuando la expresi贸n sea falsa:

n = foo()
assert n >= 0, "foo() ha retornado un valor negativo!"
return n + 1

Este mensaje formar铆a parte del error si llega a producirse la excepci贸n, y nos ayudar谩 a localizar el problema.

Testing con assert en Python

Cuando est谩s creando tests unitarios (consisten en llamar a una funci贸n cuyo resultado ya sabes de antemano cu谩l ha de ser, pero est谩s comprobando que efectivamente retorna lo que esperabas), el assert聽te sirve para verificar que el valor es el esperado.

Por ejemplo, estas escribiendo una funci贸n llamada raiz_cuadrada() y quieres comprobar si funciona bien. Puedes escribir algunos test de este estilo, para comprobar si funciona correctamente:

resultado = raiz_cuadrada(25)
assert resultado == 5.0

Cuando ejecutas estos test desde un entorno de automatizaci贸n de pruebas, ese entorno va capturando los聽AssertionError que se produzcan, de modo que al final puede darte un informe de cu谩ntos test han fallado (y cu谩les).

[ Fuente de Usos de assert en Python: stackoverflow ]

Deja un comentario