Curso
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.
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.
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.

