如何使用unittest从测试或设置内部停止所有测试?

发布于 2021-01-29 17:17:20

我正在扩展python
2.7unittest框架以进行一些功能测试。我想做的一件事是阻止所有测试在测试内部和setUpClass()方法内部运行。有时,如果测试失败,则程序会被破坏,以致无法继续进行测试,因此我想停止运行测试。

我注意到TestResult有一个shouldStop属性和一个stop()方法,但是我不确定如何在测试中访问它。

有人有什么想法吗?有没有更好的办法?

关注者
0
被浏览
51
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    过了一会儿,我想到了另一个答案:

    首先,我添加了一个新的例外:

    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的代码。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看