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

J F*_*ird 4 python unit-testing assert testcase

我正在使用assertEquals()unittest.TestCase。我现在想做的是调用一个函数,并在断言失败时在其中执行某项操作,我想知道是否有这样做的方法?

Bar*_*zKP 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)
Run Code Online (Sandbox Code Playgroud)

另一个更通用的可能性是编写您自己的runTest方法(如文档所述),该方法将所有测试包装为try/ except块。如果您确实需要这样做,则将更推荐这样做,因为这将使您的测试代码保持干净。