![](/img/trans.png)
[英]How to use setUp and tearDown in python unittest for this class
[英]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.