单元测试断言失败时运行代码

时间:2014-06-24 22:35:13

标签: python unit-testing assert testcase

使用assertEquals()中的unittest.TestCase。我现在要做的是调用一个函数并在断言失败时做一些事情,我想知道是否有一种方法可以做到这一点?

2 个答案:

答案 0 :(得分:5)

一般情况下你不应该这样做,但如果你真的想这样做,这里有一个简单的例子:

import unittest

def testFailed():
    print("test failed")

class T(unittest.TestCase):
    def test_x(self):
        try:
            self.assertTrue(False)
        except AssertionError:
            testFailed()
            raise

if __name__ == "__main__":
    suite = unittest.defaultTestLoader.loadTestsFromTestCase(T)
    unittest.TextTestRunner().run(suite)

另一个更通用的可能性是编写自己的runTest方法(如the documentation中所述),它将使用try / except块包装所有测试。如果你真的需要这样做,那就更加推荐了,因为它会让你的测试代码保持干净。

答案 1 :(得分:3)

抓住它:

try:
    # something
except AssertionError:
    # do something