仿照addCleanup 在unittest中清理addSetupclass资源
2024-09-07 12:49:34
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()
最新文章
- SQL SERVER 索引之聚集索引和非聚集索引的描述
- ted be grateful
- 推荐一些android开发学习的资料
- n皇后问题leetcode-51. N-Queens
- 【Python】 闭包&;装饰器
- 浅谈企业IT技术运营中台
- 请用java解析下xml
- sgu 169 Numbers
- html中相对(relative),绝对(absolute)位置以及float的学习和使用案例 (转)
- splay板子
- 015PHP文件处理——文件处理flock 文件锁定 pathinfo realpath tmpfile tempname
- linux 定时
- Service(一):认识service、绑定Service
- MySQL的mysql.sock文件作用(转)
- (轉)Equal height boxes with CSS
- SpringMVC的问题No mapping found for HTTP request with URI
- Python中的封装,继承和多态
- 动态RIP配置路由表
- maven deploy 代码
- storm定时器