博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python unittest框架中doCleanups妙用
阅读量:5878 次
发布时间:2019-06-19

本文共 1619 字,大约阅读时间需要 5 分钟。

  偶看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 unittestclass 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)

我们运行后看看结果:

setUpthis is cleanupssetUpthis is cleanupsteardownClass....EE

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

 

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

你可能感兴趣的文章
SQL语句的执行过程
查看>>
Silverlight开发历程—动画(线性动画)
查看>>
详解Linux中Load average负载
查看>>
HTTP 协议 Cache-Control 头——性能啊~~~
查看>>
丢包补偿技术概述
查看>>
PHP遍历文件夹及子文件夹所有文件
查看>>
WinForm程序中两份mdf文件问题的解决
查看>>
【转】唯快不破:创业公司如何高效的进行产品研发管理
查看>>
程序计数器、反汇编工具
查看>>
Android N: jack server failed
查看>>
007-Shell test 命令,[],[[]]
查看>>
关于Linux系统使用遇到的问题-1:vi 打开只读(readonly)文件如何退出保存?
查看>>
pandas 按照某一列进行排序
查看>>
在WPF中如何使用RelativeSource绑定
查看>>
Map的深浅拷贝的探究
查看>>
XSLT语法 在.net中使用XSLT转换xml文档示例
查看>>
如何将lotus 通讯簿导入到outlook 2003中
查看>>
WinForm 应用程序中开启新的进程及控制
查看>>
前端工程师的职业发展路线在哪?
查看>>
IOS 内存警告 Memory warning level
查看>>