首页 > 代码库 > python+selenium+unitest用例失败重运行
python+selenium+unitest用例失败重运行
经过多次研读和调试unittest代码,后来发现一个也可以重运行setUp()和dearDown()的解决办法,那就是修改源码,我们重新建一个模块套件类来覆盖原来的TestSuite类
实例代码:
[python] view plain copy
- class Suit(unittest.TestSuite):
- def run(self, result, debug=False):
- failcount = 1#失败总运行次数
- class_num = 1
- topLevel = False
- if getattr(result, ‘_testRunEntered‘, False) is False:
- result._testRunEntered = topLevel = True
- for test in self:
- case_num = 1
- if result.shouldStop:
- break
- success_flag = True
- while success_flag:
- 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)):
- if class_num > failcount:
- success_flag = False
- else:
- time.sleep(5)
- result._previousTestClass = None
- print ‘类%s第%s次重新初始化执行‘%(test.__class__,class_num)
- class_num += 1
- continue
- if not debug:
- test(result)
- else:
- test.debug()
- if result.result[-1][0]==1 or result.result[-1][0]==2:#结果为fail和err用例判断
- if case_num > failcount:
- success_flag = False
- else:
- print ‘用例%s第%s次重新执行‘%(test,case_num)
- case_num += 1
- else:
- success_flag = False
- if topLevel:
- self._tearDownPreviousClass(None, result)
- self._handleModuleTearDown(result)
- result._testRunEntered = False
- return result
然后测试使用
alltests=suit.Suit()
alltests.addtest(WidgetTestCase("testDefaultSize"))
runner =HTMLTestRunner.HTMLTestRunner(stream=fp,verbosity=2,title=‘Android测试报告‘,description=‘用例执行情况:‘,)
runner.run(alltests)
运行完后,有失败重运行的用例都会打印在测试报告里,方便查阅
python+selenium+unitest用例失败重运行
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。