繁体   English   中英

如何停止在Python unittest tearDown()中进行测试?

[英]How do I stop testing in Python unittest tearDown()?

我有大量使用Python unittest (Python 2.7.8)作为大型TestSuite编写的测试。 这些测试中有许多调用其他程序。 有时,这些其他程序会转储核心。 当他们这样做时,我想发现这一点并确保测试失败。 如果转储了一些内核,我想中止整个测试环境并退出而不是继续:我的整个测试套件具有> 6000个测试,并且如果所有内容都在转储内核,则继续使用是毫无用处的(并且很危险:磁盘空间等)。

为了确保我们在每次测试后都查找coredumps(因此,我对哪个程序/调用转储了内核有最好的了解),我决定在tearDown()查找cores,这是我成功完成的。 如果找到内核,则可以在tearDown()运行一个assert变量,以指定测试失败。

但是,如果我发现太多内核,我无法弄清楚如何仅仅从tearDown()完全放弃所有测试。 我什至试图运行sys.exit("too many cores") ,但是unittest case.py捕获了除KeyboardInterrupt之外tearDown()抛出的所有异常(如果我尝试手动将其挂起,直到我执行真正的^C为止) )。

我考虑过尝试调用stop() ,但这是结果的一种方法,我找不到任何方法可以从tearDown() (!)中访问结果对象。

到目前为止,我唯一的选择似乎是调用os._exit() ,这确实很烦人,因为它根本阻止了报告任何结果!

Python unittest.TestCase真的没有工具告诉测试环境立即停止,生成您有什么结果,但是什么也不要运行吗?

您可以检查setUp()转储了多少个内核吗? 如果是这样,当情况变糟时,您可以仅调用self.skipTest('Too many cores dumped.')

如果您不想在setUp()寻找核心,则可以使用类变量来保存核心转储计数并进行检查。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM