python unittest框架中doCleanups妙用

  偶看unittest官方文档中,发现一个很好用的功能函数doCleanups,看看官方是怎么解释的:

doCleanups()
This method is called unconditionally after tearDown(), or after setUp() if setUp() raises an exception.

It is responsible for calling all the cleanup functions added by addCleanup(). If you need cleanup functions to be called prior to tearDown() then you can call doCleanups() yourself.

doCleanups() pops methods off the stack of cleanup functions one at a time, so it can be called at any time.

该功能函数在2.7之后就支持了

来来来,简单用中文说明一下吧,大概意思如下:

无条件的执行改函数,在tearnDown()之后或者在setUp()之后即使setUp失败的情况下也会执行
与addCleanup搭配使用

看完后大家都明白了吧,平时我们使用tearDown函数时,当setUp运行失败时,tearDown就不执行了,所以就会有遗留资源的存在,正好doCleanups帮我们解决了这个困扰,不用再写try...except....finally了。

 

下面,用个实例来看看doCleanups怎么运行的

#coding:utf-8
'''
Created on 2016年8月31日
@author: zq
'''
import unittest

class my(unittest.TestCase):
    
    def a(self):
        print "aaaa"
    
    def setUp(self):
        print "setUp"
        raise IOError,"errorororororo"  #这里特意让setUp产生错误

        
    def test_1(self):
        '''i dont konw'''
        print "test_1"
        
    def tearDown(self):
        print 'this tearDown'
        
    def doCleanups(self):
        print "this is cleanups"
    
    def test_2(self):
        print "test_2"
    
    @classmethod
    def tearDownClass(cls):
        print "teardownClass...."
        
if __name__=="__main__":
    test=unittest.TestSuite()
    test.addTest(my('test_1'))
    test.addTest(my('test_2'))
    runner=unittest.TextTestRunner()
    runner.run(test)

我们运行后看看结果:

setUp
this is cleanups
setUp
this is cleanups
teardownClass....
EE

看看,从运行结果中可以看出。即使setUp出现错误的情况下,doCleanups还是运行了。

 

转载于:https://www.cnblogs.com/landhu/p/7344624.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值