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):<

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





