Python+unittest失败重新运行并覆盖报告

本文介绍了如何在Python的unittest框架下,当测试用例失败时自动重新运行,并且只保留最新一次的运行结果在报告中。通过修改unittest.suite.py文件中的run方法,设置重试次数和时间间隔,实现了这一功能。此外,还提供了一个skip_dependon装饰器,用于在用例失败后跳过依赖的用例。最后,分享了一个优化后的HTMLTestRunner报告模块的链接以提高测试效率。

Python+unittest失败重新运行并覆盖报告

用例失败自动重新运行一直困扰着诸多测试人员,在网上找寻了半天一直也没有找到一个能够完美解决的方案,普遍都存在最后一个用例失败后会再次重新运行整个suite并在报告中显示多个相同的失败用例的情况。笔者为了解决该问题兼职煞费苦心,终于,黄天不负有心人,通过不懈努力和不断的调试终于在此基础上完美解决了该问题,并整合两次运行结果将最贴近的结果整合到报告中,现将代码贴出与大家分享,若有不完善之处还多体谅,具体步骤如下:
找到Lib\unittest\suite.py中run方法

def run(self, result, debug=False):
topLevel = False
if getattr(result, ‘_testRunEntered’, False) is False:
result._testRunEntered = topLevel = True

for index, test in enumerate(self):
    if result.shouldStop:
        break

    if _isnotsuite(test):
        self._tearDownPreviousClass(test, result)
        self._handleModuleFixture(test, result)
        self._handleClassSetUp(test, result)
        result._previousTestClass = test.__class__

        if (getattr(test.__class__, '_classSetupFailed', False) or
            getattr(result, '_moduleSetUpFailed', False)):
            continue

    if not debug:
        test(result)
    else:
        test.debug()

    if self._cleanup:
        self._removeTestAtIndex(index)

if topLevel:
    self._tearDownPreviousClass(None, result)
    self._handleModuleTearDown(result)
    result._testRunEntered = False
return result

重新该方法:

是否开启失败重跑

FAILURE_REPEAT_RUN_FLAG = True

失败重跑尝试次数

FAILURE_REPEAT_RUN_NUM = 1

设置重跑时间间隔

REPEAT_TIME_INTERVAL = 4

def run(self, result, debug=False):<

评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值