有没有办法防止从sys.exit()引发的SystemExit异常被捕获?

12 浏览
0 Comments

有没有办法防止从sys.exit()引发的SystemExit异常被捕获?

文档中提到调用sys.exit()会引发一个SystemExit异常,该异常可以在外部层次中捕获。但我有一个情况,我想要在测试用例内部明确无疑地退出,然而unittest模块会捕获SystemExit并阻止退出。这通常是很好的,但我要处理的特定情况是我们的测试框架检测到配置指向非测试数据库。在这种情况下,我想要退出并阻止进一步运行任何测试。当然,因为unittest捕获了SystemExit并继续快乐地进行,它在妨碍我。

到目前为止,我想到的唯一选择是使用ctypes或类似的方法直接调用exit(3),但这似乎是一个相当丑陋的解决办法,对于应该非常简单的事情来说。

0