我使用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