addCleanup的用例这里不介绍了,可以看我的另一编文章: python unittest框架中addCleanup函数详解

但如果有下面这种场景,还是会遗留大批理资源

在setUpClass注入各种先导资源,比如:

1、注入a

2、注入b

3、注入c

然后在teardownclass中清理

1、清理c

2、清理b

3、清理a

假设在注入b时出错了,那么在teardownclass中第一步就会出错

解决方法:

我们仿照addCleanup写一个这样的函数,如下

1、先在setupclass中定义一个列表

2、写SetupCleanup这样一个函数及doSetupCleanup函数,将列表倒序

3、将doSetupCleanup加入在tearDownClass中

代码如下:

    @classmethod
def setUpClass(cls):
....
cls.setup_cleanup_list = []
....
    @classmethod
def SetupCleanup(cls, func, *args, **kwargs):
cls.setup_cleanup_list.append((func, args, kwargs)) @classmethod
def doSetupcleanup(cls):
try:
for item in reversed(cls.setup_cleanup_list):
function, args, kwargs = item
for _ in range(3):
try:
function(*args, **kwargs)
break
except Exception as e:
log.exception(e)
finally:
cls.setup_cleanup_list = []
    @classmethod
def tearDownClass(cls):
cls.doSetupcleanup()

最新文章

  1. SQL SERVER 索引之聚集索引和非聚集索引的描述
  2. ted be grateful
  3. 推荐一些android开发学习的资料
  4. n皇后问题leetcode-51. N-Queens
  5. 【Python】 闭包&装饰器
  6. 浅谈企业IT技术运营中台
  7. 请用java解析下xml
  8. sgu 169 Numbers
  9. html中相对(relative),绝对(absolute)位置以及float的学习和使用案例 (转)
  10. splay板子
  11. 015PHP文件处理——文件处理flock 文件锁定 pathinfo realpath tmpfile tempname
  12. linux 定时
  13. Service(一):认识service、绑定Service
  14. MySQL的mysql.sock文件作用(转)
  15. (轉)Equal height boxes with CSS
  16. SpringMVC的问题No mapping found for HTTP request with URI
  17. Python中的封装,继承和多态
  18. 动态RIP配置路由表
  19. maven deploy 代码
  20. storm定时器

热门文章

  1. Ubuntu安装支持PCL、LAS的CloudCompare
  2. Maven介绍及环境搭建
  3. eclipse卡在revert resources的解决方法
  4. 不依赖Spring使用AspectJ达到AOP面向切面编程
  5. Prometheus PromSQL 获取系统服务运行状态
  6. dotnet学习系列
  7. 华为方舟编译器 下载 和 LiteOS Studio Setup 2019-04-16.exe SDK下载
  8. Linux文本编辑器的常用命令
  9. Delphi中窗体的事件
  10. js中的原型,原型链和继承