Saltar al contenido principal
InicioTutorialesPython

Cómo utilizar la sentencia assert en Python

Implementar la sentencia assert en Python es sencillo: utilizamos assert para probar condiciones y mostrar un mensaje si la condición no se cumple.
Actualizado 27 jun 2024  · 6 min leer

La sentencia assert en programación Python es una herramienta para establecer verdades fundamentales en tu código. Funcionan permitiendo a los desarrolladores validar las suposiciones de su código. En este tutorial, dominaremos la sentencia assert de Python, incluida su sintaxis, uso y aplicaciones en depuración y detección de errores. Dominando la declaración assert de Python, estaremos un paso más cerca de convertirnos en expertos programadores de Python

La respuesta corta: Cómo escribir afirmaciones en Python 

La sintaxis de la sentencia assert es sencilla:

assert condition, message

Aquí, condition se refiere a la expresión que se está probando, mientras que message es un mensaje de error opcional que aparece si la afirmación falla.

Aquí tienes algunas afirmaciones que puedes probar en tu código Python para cogerle el truco. En el primer caso, la expresión 3<4>5 es lógicamente incorrecta, por lo que Python lanza un AssertionError con el mensaje que hemos proporcionado: "Las matemáticas no funcionan así". En el segundo caso, la expresión 0==0 es una tautología, por lo que nunca vemos el mensaje "Esto no debería provocar un error". 

assert 3<4>5, "Math does not work that way."
assert 0==0, "This shouldn't throw an error."

Visión general de la afirmación de Python

Echemos ahora un vistazo más de cerca a la sentencia assert de Python, incluido cómo y por qué se utiliza. Al final de este tutorial, serás un experto en el uso de la sentencia assert en Python. 

¿Qué son las afirmaciones en Python?

Las afirmaciones en programación, de forma más general, son construcciones utilizadas para verificar la veracidad de las condiciones en el código base. En otras palabras, son verdades que el programa debe cumplir o, de lo contrario, arrojarán un error. Al utilizar la palabra "assert", Python implementa estas afirmaciones de programación con una sintaxis muy literal: La declaración assert nos permite crear estas afirmaciones.

Cuándo utilizar las afirmaciones de Python

Las afirmaciones son inestimables para depurar, validar suposiciones y garantizar que el código se comporta como se espera en condiciones específicas. Te permiten decirle al ordenador lo que esperas que haga y pedirle que se detenga cuando haga algo distinto. Esto es útil cuando se construye un nuevo programa o se añade una característica o se actualiza una aplicación existente.

Las afirmaciones brillan en escenarios donde los desarrolladores deben hacer cumplir precondiciones, poscondiciones o invariantes dentro de su código base. Actúan como guardarraíles, que impiden que el código avance si se violan determinadas condiciones, lo cual ayuda a la detección temprana de posibles fallos.

Al colocar estratégicamente las afirmaciones a lo largo del código, puede detectar los errores más cerca de su origen, lo que simplifica la depuración. La carrera de desarrollador de Python de DataCamp es un gran curso para que los aspirantes a desarrolladores de todos los niveles practiquen sus habilidades de programación funcional, ya que incluye ejercicios con conceptos tanto básicos como más avanzados.

Cuándo no utilizar las afirmaciones de Python

Aunque las afirmaciones tienen un valor incalculable durante el desarrollo, hay situaciones en las que su uso puede resultar inapropiado.

Es importante entender que cuando tu código se compila para la producción, las afirmaciones se pueden desactivar globalmente. Esto significa que no debes confiar en las afirmaciones para resolver problemas en tiempo de ejecución, como la introducción de datos erróneos por parte de un usuario. En su lugar, deben utilizarse para problemas de desarrollo, como la identificación de imprecisiones lógicas o matemáticas.

Para gestionar errores o validar datos en el código de producción, intenta incorporar construcciones de gestión de excepciones para permitir que el código se recupere de los errores con elegancia, registra la información relevante con fines de depuración y proporciona información significativa a los usuarios.

Puedes aprender más sobre cómo encontrar errores y corregirlos en nuestro tutorial Tratamiento de errores y excepciones en Python o con nuestro curso Científico de datos asociado en Python

Errores comunes y conceptos erróneos con la sentencia assert en Python

Un error común al utilizar la sentencia assert en Python es utilizar paréntesis. Se trata de un error comprensible, ya que muchas funciones utilizan paréntesis, e incluirlos puede parecer algo natural. Sin embargo, la sentencia assert no es técnicamente una función en Python, por lo que utiliza una sintaxis especial. Si utiliza paréntesis, es probable que se encuentre con advertencias de sintaxis y errores lógicos.

Ejemplo de error debido al uso de paréntesis en una sentencia assert.SyntaxWarning: assertion is always true, perhaps remove parentheses?

Otro error común es olvidar la coma después de la condición. En ese caso, se producirá un error de sintaxis.

Ejemplo de error debido a la falta de una coma en una sentencia assert.SyntaxError: invalid syntax

La excepción AssertionError

Cuando se infringen los términos de una aserción, se produce una excepción en AssertionError. Este error detiene la ejecución del programa; se mostrará cualquier mensaje de error opcional que hayas establecido. Dado que las aserciones se utilizan principalmente para probar el código durante el desarrollo, si recibes un mensaje de excepción de Python AssertionError, por lo general querrás tomártelo en serio. Podrías apuntar a un fallo fatal en tu código.

Aplicaciones prácticas

Una sentencia assert puede utilizarse en muchas aplicaciones prácticas en Python. Nuestro curso interactivo Escribir funciones en Python proporciona muchos ejercicios que te ayudarán a adquirir maestría. He aquí un par de ejemplos. 

Uso de assert dentro de una función

Una forma útil de utilizar las afirmaciones es insertarlas en funciones. Esto puede ayudar a garantizar que las funciones se comporten según lo previsto.

def divide(a, b):
assert b != 0, "Division by zero!"
return a / b

# Test cases
print(divide(10, 2))  # Output: 5.0
print(divide(8, 0))   # AssertionError: Division by zero!

Uso de assert con unittest

Probar tu código es un paso esencial en el proceso de desarrollo. Unittest es una biblioteca diseñada para ayudarte a probar el código de manera eficiente, y utiliza sentencias assert para hacerlo. Esta es la forma más frecuente en que utilizo las sentencias assert. Aquí tienes un ejemplo que puedes encontrar en nuestro curso Introducción a las pruebas en Python

import unittest

class TestMathFunctions(unittest.TestCase):
    def test_addition(self):
        self.assertEqual(2 + 2, 4)

    def test_subtraction(self):
        self.assertEqual(5 - 3, 2)

    def test_division(self):
        self.assertRaises(ZeroDivisionError, divide, 10, 0)

if __name__ == '__main__':
    unittest.main()

Conclusión

La sentencia assert de Python es una herramienta vital para depurar y verificar condiciones en tu código durante el desarrollo. Aunque es simple y eficaz para probar suposiciones, no se debe confiar en él en producción debido a su desactivación en el código compilado. En su lugar, debe utilizarse el manejo de excepciones para una gestión sólida de los errores. 

Considera la posibilidad de leer nuestro tutorial Prácticas recomendadas y directrices de codificación como recurso para las preguntas pendientes.

Temas

Aprende con DataCamp

Course

Writing Efficient Python Code

4 hr
122.4K
Learn to write efficient code that executes quickly and allocates resources skillfully to avoid unnecessary overhead.
See DetailsRight Arrow
Start Course
Ver másRight Arrow
Relacionado

tutorial

Cómo utilizar Pytest para pruebas unitarias

Explore qué es Pytest y para qué se utiliza mientras lo compara con otros métodos de prueba de software.
Kurtis Pykes 's photo

Kurtis Pykes

17 min

tutorial

if...elif...else en el tutorial de Python

Aprende a crear sentencias if...elif...else en Python.
DataCamp Team's photo

DataCamp Team

4 min

tutorial

Tutorial de funciones de Python

Un tutorial sobre funciones en Python que cubre cómo escribir funciones, cómo invocarlas y mucho más.
Karlijn Willems's photo

Karlijn Willems

14 min

tutorial

Tutorial sobre cómo ejecutar consultas SQL en Python y R

Aprenda formas fáciles y eficaces de ejecutar consultas SQL en Python y R para el análisis de datos y la gestión de bases de datos.
Abid Ali Awan's photo

Abid Ali Awan

13 min

tutorial

Cómo comentar un bloque de código en Python

Utilizar comentarios es fundamental para trabajar eficazmente con Python. En este breve tutorial, aprenderás a comentar un bloque de código en Python.
Adel Nehme's photo

Adel Nehme

3 min

tutorial

Manejo de excepciones y errores en Python

Los errores y las excepciones pueden provocar fallos en el programa o comportamientos inesperados, y Python viene con un sólido conjunto de herramientas para mejorar la estabilidad del código.
Abid Ali Awan's photo

Abid Ali Awan

21 min

See MoreSee More