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

时间:2009-03-15 14:33:34

标签: python unit-testing exception exception-handling

我了解unittest Python模块。

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

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

有任何提示吗?

3 个答案:

答案 0 :(得分:24)

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

更新:正如liw.fi所提到的,默认结果是成功,因此上面的示例是反模式。如果你想在失败之前做一些特别的事情,你应该只使用它。您还应该抓住可能的最具体的例外情况。

答案 1 :(得分:14)

测试运行器将捕获您未声明的所有异常。 因此:

doStuff()
self.assert_(True)

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

答案 2 :(得分:6)

我将这种模式用于你提出的那种断言:

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

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