根据单元测试文档doCleanups()是负责调用所有清理方法的方法。
一种方法是在 doCleanups 方法中检查测试用例的结果,如果测试用例失败则弹出所有清理方法并跳过其余测试用例
下面是代码:
import unittest
class SimpleTestCases(unittest.TestCase):
FAILURE = False
def setUp(self):
print "\nmessage from function: setUp"
if SimpleTestCases.FAILURE:
self.skipTest("Test is skipped due to first failure")
return super(SimpleTestCases, self).setUp()
self.createResource()
self.addCleanup(self.cleanResource)
def createResource(self):
msg = "\nmessage from function: createResource"
def cleanResource(self):
print "\nmessage from function: cleanResource"
def test_func1(self):
print "message from function: test_func1::start"
print "message from function: test_func1::end"
def test_func2(self):
print "message from function: test_func2::start"
self.assertTrue(False)
print "message from function: test_func2::end"
def test_func3(self):
print "message from function: test_func3::start"
print "message from function: test_func3:end"
def doCleanups(self):
print "message from function: doCleanups"
if SimpleTestCases.FAILURE:
return super(SimpleTestCases, self).doCleanups()
result = getattr(self, '_outcomeForDoCleanups', self._resultForDoCleanups)
ok_result = True
exc_list = getattr(result, 'failures')
if exc_list and exc_list[-1][0] is self:
ok_result = ok_result and not exc_list[-1][1]
if not ok_result:
SimpleTestCases.FAILURE = True
while self._cleanups:
(func, args, kwargs) = self._cleanups.pop()
return super(SimpleTestCases, self).doCleanups()
if __name__ == "__main__":
result = unittest.main()
吃鸡游戏
相关分类