偶看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还是运行了。

python unittest框架中doCleanups妙用的更多相关文章

  1. python unittest框架中addCleanup函数详解

    接上一篇doCleanups说明,这次介绍下另一个很好用的函数:addCleanup 还是老规矩,看官方文档说明: addCleanup(function, *args, **kwargs)¶ Add ...

  2. unittest框架中读取有特殊符号的配置文件内容的方法-configparser的RawConfigParser类应用

    在搭建Unittest框架中,出现了一个问题,配置文件.ini中,出现了特殊字符如何处理? 通过 1.configparser的第三方库对应的ConfigParser类,无法完成对特殊字符的读取: # ...

  3. python的unittest框架中的assert断言

    unittest框架自带断言,如果想用assert断言,一定要引入unittest.TestCase框架才行,不然不会自动识别assert断言

  4. 解惑unittest框架中导入HTMLTestRunner模块后正常运行却无法生成HTML报告问题

    1.HTMLTestRunner介绍 HTMLTestRunner是一个第三方的unittest HTML报告库,用于python单元测试框架的TestRunner.它是生成一个HTML报告,以一目了 ...

  5. python unittest addCleanup中也加失败截图功能

    在python web自动化测试中失败截图方法汇总一文中提到了失败截图的方法 但在实际测试中,如果我们的测试用例中加了addCleanups动作,如果addCleanups中动作失败了,就不会截图.那 ...

  6. python+unittest框架第一天unittest之简单认识Test Fixure:测试固件【8月17更新】

    20万的慢慢会实现的吧,hhh unittest框架,我就不在介绍了,百度有很详细的介绍. 我们只要了解: 1.unittest是单元测试框架 2.它提供用例组织与执行:在实际工作中案例可能有上百条, ...

  7. python的unittest框架中如何删除测试数据,清理环境,可以通过addCleanup函数

    def addCleanup(self, function, *args, **kwargs): """Add a function, with arguments, t ...

  8. python+unittest框架整理(一点点学习前辈们的封装思路,一点点成长。。。)

    预期框架整理目标: 1.单个用例维护在单个.py文件中可单个执行,也可批量生成组件批量执行 2.对定位参数,定位方法,业务功能脚本,用例脚本,用例批量执行脚本,常用常量进行分层独立,各自维护在单独的. ...

  9. python unittest框架理解与总结(二)

    unittest基本原理: ♦整个平台的搭建使用的是python的unittest测试框架,这里简单介绍下unittest模块的简单应用. ♦unittest是python的标准测试库,相比于其他测试 ...

随机推荐

  1. UNIX环境编程学习笔记(27)——多线程编程(二):控制线程属性

    lienhua342014-11-09 1 线程属性概括 POSIX 线程的主要属性包括 scope 属性.detach 属性.堆栈地址.堆栈大小.优先级.在头文件 pthread.h 中定义了结构体 ...

  2. phpcms v9不限模型全站搜索

    简单修改一下v9默认的搜索功能,可以不按模型搜索全站内容 下面是被修改后的search模块中的index.php文件 <?php defined('IN_PHPCMS') or exit('No ...

  3. mysql对执行结果进行html格式的输出?输出html格式?

    需求描述: 在执行mysql命令的时候,有的时候需要将查询的结果输出到文件,如果想要html格式的,应该怎么输出, 在此记录下操作的过程. 1.通过tee命令结合--html输出查询结果到html文件 ...

  4. SpringBoot------连接mysql时出现警告:Establishing SSL connection without server's identity verification is not recommended

    SpringBoot连接MySQL时出现警告: 英文: Mon Jun :: CST WARN: Establishing SSL connection without server's identi ...

  5. swoole的进程模型架构

    swoole的强大之处就在与其进程模型的设计,既解决了异步问题,又解决了并行. 主线程MainReactor swoole启动后主线程会负责监听server socket,如果有新的连接accept, ...

  6. 使用 redis “捕捉” “用户登录过期” 事件

    实现原理及步骤: 1)登录时,计算登录过期时间,以分钟为单位作key(例如:sign_timeout_201705212233),value方面自己发挥,需要什么数据就拼什么数据进去,只是要注意,一定 ...

  7. 判断App整体处于前台还是后台

    1.通过RunningTaskInfo类判断(需要额外权限): 复制代码代码如下: /** *判断当前应用程序处于前台还是后台 */ public static boolean isApplicati ...

  8. [Vim] Vim 常用基本操作

    1. 导航 1.1. 查看行号 :set number  显示行号 :set number!  隐藏行号 :.=  在底部显示当前行号 :=  在底部显示总行号 1.2. 移动光标 0 或 ^    ...

  9. mybatis 之 resultType="Integer"

    public class EcPromoteRuleAdditionalNew extends BaseBO { private String[] promoteRuleIds; public Str ...

  10. OpenCV——轮廓特征描述

    检测出特定轮廓,可进一步对其特征进行描述,从而识别物体. 1. 如下函数,可以将轮廓以多种形式包围起来. // 轮廓表示为一个矩形 Rect r = boundingRect(Mat(contours ...