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



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

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

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方法(如文档中提到的),它将用try/except块包装所有测试。如果您确实需要这样做,则更建议这样做,因为它将使您的测试代码保持干净。

抓住它:

try:
    # something
except AssertionError:
    # do something

相关内容

  • 没有找到相关文章

最新更新