【发布时间】:2014-06-24 22:35:12
【问题描述】:
我正在使用来自unittest.TestCase 的assertEquals()。我现在想做的是在断言失败时调用一个函数并在那里做一些事情,不知道有没有办法做到这一点?
【问题讨论】:
标签: python unit-testing assert testcase
我正在使用来自unittest.TestCase 的assertEquals()。我现在想做的是在断言失败时调用一个函数并在那里做一些事情,不知道有没有办法做到这一点?
【问题讨论】:
标签: python unit-testing assert testcase
一般来说你不应该这样做,但如果你真的想这样做,这里有一个简单的例子:
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 块包装所有测试。如果您确实需要这样做,则更推荐这样做,因为它会使您的测试代码保持干净。
【讨论】:
抓住它:
try:
# something
except AssertionError:
# do something
【讨论】: