Los documentos dicen que al llamar a sys.exit() se genera una excepción SystemExit que se puede atrapar en niveles externos. Tengo una situación en la que quiero salir definitiva e incuestionablemente desde el interior de un caso de prueba; sin embargo, el módulo unittest detecta SystemExit e impide la salida. Esto normalmente es genial, pero la situación específica que trato de manejar es una en la que nuestro marco de prueba ha detectado que está configurado para apuntar a una base de datos que no es de prueba. En este caso, quiero salir e impedir que se ejecuten más pruebas. Por supuesto, dado que Unittest atrapa el SystemExit y continúa felizmente en su camino, me está frustrando.¿Hay alguna forma de evitar que una excepción SystemExit generada a partir de sys.exit() quede atrapada?
La única opción en la que he pensado hasta ahora es usar ctypes o algo similar para llamar a exit (3) directamente, pero esto parece ser un truco muy fugly para algo que debería ser realmente simple.
Esto también es relevante cuando se trata de salir de un programa desde un shell de IPython incrustado. – quazgar