如何使用unittest从测试或设置内部停止所有测试?
我正在扩展python
2.7unittest
框架以进行一些功能测试。我想做的一件事是阻止所有测试在测试内部和setUpClass()
方法内部运行。有时,如果测试失败,则程序会被破坏,以致无法继续进行测试,因此我想停止运行测试。
我注意到TestResult有一个shouldStop
属性和一个stop()
方法,但是我不确定如何在测试中访问它。
有人有什么想法吗?有没有更好的办法?
-
过了一会儿,我想到了另一个答案:
首先,我添加了一个新的例外:
class StopTests(Exception): """ Raise this exception in a test to stop the test run. """ pass
然后我
assert
给孩子的测试课添加了一个新的:def assertStopTestsIfFalse(self, statement, reason=''): try: assert statement except AssertionError: result.addFailure(self, sys.exc_info())
最后,我覆盖了将该
run
函数包含在testMethod()
调用下方的功能:except StopTests: result.addFailure(self, sys.exc_info()) result.stop()
我更喜欢这样做,因为现在任何测试都可以停止所有测试,并且没有特定于cpython的代码。