unittest用例失败重跑带setup/teardown

简介: 之前在网上可以随便找到unittest的用例失败重跑解决方案,那是加了一个装饰函数,但是却没有带上setup和teardown,这导致重跑的用例没办法启动初始化函数和收尾函数。

在这基础上,稍作改动,给加上了setup和teardown。

废话不多说,直接上代码

import unittest
def log(s, t, n):
    def decorator(xingfangfa):
        print xingfangfa
        def wrapper(*a,**w):
            for i in range(n):
                try:
                    print '-------------------\nNum:', i
                    re = xingfangfa(*a,**w)
                    print 'success \n-------------------'
                    return re
                except Exception:
                    print 'have a error '
                    t(*a)
                    s(*a)
                    print '\n-------------------'
            raise Exception
        return wrapper
    return decorator
class Test(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        cls.abc = 0
    def setUp(self):
        print 'I am setup','abc:',self.abc
    def tearDown(self):
        print 'I am tearDown','abc:',self.abc
    @log(setUp,tearDown,5)
    def test1(self,q=2):
        self.abc += 1
        print 'do case: ',
        assert self.abc == 3
if __name__ == '__main__':
    unittest.main()

其中 n 表示最大重跑5次

把setUp tearDown当作参数给 重跑装饰器

重跑装饰器相对于传统装饰器增加最外层控制器

相关文章
|
供应链
代采系统如何利用大数据分析优化采购决策?
代采系统可以利用大数据分析来优化采购决策
|
11月前
|
机器学习/深度学习 人工智能 安全
大模型走向物理世界,TeleAI 发布大模型驱动的具身智能综述,覆盖300篇文献
TeleAI 团队发布了一篇关于大模型驱动的具身智能综述文章,系统回顾了该领域的研究进展与挑战,涵盖了300篇相关文献。具身智能通过将智能体与现实环境结合,提升了其感知、决策及执行能力。大模型的应用不仅增强了智能体的学习与适应能力,还提高了其泛化性和鲁棒性。然而,计算复杂度、可解释性及安全性等问题仍需解决。代表性工作包括智能机器人导航和无人机自主飞行等。论文地址:https://www.sciengine.com/SSI/doi/10.1360/SSI-2024-0076
285 4
|
存储 JavaScript Java
《手把手教你》系列技巧篇(四十七)-java+ selenium自动化测试-判断元素是否显示(详解教程)
【5月更文挑战第11天】WebDriver 的 `isDisplayed()` 方法用于检查页面元素是否可见,如果元素存在于DOM中且可视,返回`true`,否则返回`false`。在自动化测试中,这个方法常用于验证元素是否真正显示在页面上。示例代码展示了如何使用 `isDisplayed()` 判断百度登录页面的特定错误提示文字是否出现。
239 1
|
消息中间件 关系型数据库 MySQL
实时计算 Flink版操作报错合集之运行mysql to doris pipeline时报错,该如何排查
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
XML JSON 监控
技术经验分享:Axis2实践
技术经验分享:Axis2实践
235 0
|
Python
pip安装第三方库报错WARNING: Retrying (Retry(total=4,connect=None, read=Noneredirect=None,status=None))解决
pip安装第三方库报错WARNING: Retrying (Retry(total=4,connect=None, read=Noneredirect=None,status=None))解决
2817 0
pip安装第三方库报错WARNING: Retrying (Retry(total=4,connect=None, read=Noneredirect=None,status=None))解决
阿里巴巴在开源压测工具 JMeter 上的实践和优化
本文是 《如何做好性能压测》系列专题分享的第三期,该专题将从性能压测的设计、实现、执行、监控、问题定位和分析、应用场景等多个纬度对性能压测的全过程进行拆解,以帮助大家构建完整的性能压测的理论体系,并提供有例可依的实战。
6428 98
|
机器学习/深度学习 传感器 算法
【数字信号调制】基于matlab实现2PSK二进制数字相位调制
【数字信号调制】基于matlab实现2PSK二进制数字相位调制
|
Python
Socket接口测试
Socket接口测试
344 0