当前位置:  开发笔记 > 编程语言 > 正文

Python - 在未引发异常时成功的测试

如何解决《Python-在未引发异常时成功的测试》经验,为你挑选了3个好方法。

我知道unittestPython模块.

我知道课堂的assertRaises()方法TestCase.

我想编写一个在引发异常时成功的测试.

有什么提示吗?



1> Hank Gay..:
def runTest(self):
    try:
        doStuff()
    except:
        self.fail("Encountered an unexpected exception.")

更新:正如liw.fi所提到的,默认结果是成功,所以上面的例子是反模式.如果你想在失败之前做一些特别的事情,你应该只使用它.您还应该捕获可能的最具体的异常.


这具有丢失原始堆栈跟踪的缺点,使得测试更难以在失败时进行调试.
谢谢 - "喝咖啡之前的回答"再次罢工.

2> 小智..:

测试运行器将捕获您未声明的所有异常.从而:

doStuff()
self.assert_(True)

这应该工作正常.您可以省略self.assert_调用,因为它实际上没有做任何事情.我喜欢把它放在那里以证明我没有忘记一个断言.


这样测试不会失败但会引发错误.在我看来,另一个答案中提到的try/except方法是一个更好的答案.

3> kosii..:

我使用这种模式作为你问过的断言:

with self.assertRaises(Exception):
    try:
        doStuff()
    except:
        pass
    else:
        raise Exception

当doStuff()引发异常时,它将完全失败.

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有