关于单元测试:Python – 在未引发异常时成功的测试

Python - test that succeeds when exception is not raised

我知道unittestpython模块。

我知道TestCase类的assertRaises()方法。

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

有什么提示吗?


1
2
3
4
5
def runTest(self):
    try:
        doStuff()
    except:
        self.fail("Encountered an unexpected exception.")

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


测试运行程序将捕获所有未断言的异常。因此:

1
2
doStuff()
self.assert_(True)

这应该很管用。你可以省去self.assert调用,因为它实际上不起任何作用。我喜欢把它放在那里,证明我没有忘记一个断言。


我使用这种模式来表示您所要求的断言:

1
2
3
4
5
6
7
with self.assertRaises(Exception):
    try:
        doStuff()
    except:
        pass
    else:
        raise Exception

当dostuf()引发异常时,它将完全失败。