我有大量的测试是用Pythonunittest
(python2.7.8)作为一个大的TestSuite
编写的。其中许多测试会调用其他程序。有时这些其他程序会转储内核。当他们这样做时,我想发现这一点并确保测试失败。如果有一些内核被转储,我希望中止整个测试环境并退出,而不是继续:我的整个测试套件有超过6000个测试,如果所有的测试都在转储内核,那么继续下去就没用了(而且很危险:磁盘空间等)。在
为了确保在每次测试后都能找到coredump(因此我对哪个程序/调用转储的core有了最好的了解),我决定在tearDown()
中查找核心,我正在成功地做这件事。如果找到核心,我可以在tearDown()
中运行assert变量来指定测试失败。在
但是如果我发现了太多的核心,我不知道如何完全放弃所有的测试。我甚至尝试运行sys.exit("too many cores")
,但是unittest case.py
捕获了tearDown()
抛出的每个异常,除了keyboardInterrupt
(如果我试图手动提出,我的脚本将挂起,直到我执行一个真正的^C
)。在
我想尝试调用stop()
,但这是一个结果方法,我找不到任何方法从tearDown()
(!)内访问result对象。在
到目前为止,我唯一的选择似乎是调用os._exit()
,这真的很烦人,因为它根本不让任何结果被报告!在
Python中真的没有工具告诉测试环境立即停止,生成您得到的结果而不运行其他任何东西吗?在
你能检查一下在
setUp()
中转储了多少个内核吗?{如果你能打电话给我的话。在{core}如果你不想在类中查找一个变量,那么你可能不想使用这个变量。在
相关问题 更多 >
编程相关推荐