Comprobar que un test unitario en Python no lanza una excepción

Usando la librería estándar de Python unittest se puede comprobar si un trozo de código lanza una excepción. Pero ¿cómo comprobar que un trozo de código no lanza una excepción? Además, ¿cómo hacer para que la información de la excepción se muestre de forma correcta al ejecutar los tests?

Para comprobar que no se lanza una excepción simplemente se puede introducir el código a comprobar dentro de un bloque try…except y hacer fallar manualmente al test si se captura una excepción:

try:
    my_code()
except:
    self.fail("Exception captured")

(vía StackOverflow)

Sin embargo la información de la excepción no se muestra correctamente. Para arreglar esto podemos usar la librería estándar traceback para mostrar la información de la excepción:

import traceback
(...)
try:
    my_code()
except:
    self.fail(traceback.format_exc())

Solo recordad que los bloques try…except estarán dentro de la función y la clase de prueba correspondiente.

Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.