python+selenium+unitest用例失败重运行

经过多次研读和调试unittest代码,后来发现一个也可以重运行setUp()和dearDown()的解决办法,那就是修改源码,我们重新建一个模块套件类来覆盖原来的TestSuite类

实例代码:

[python] view plain copy

  1. class Suit(unittest.TestSuite):
  2. def run(self, result, debug=False):
  3. failcount = 1#失败总运行次数
  4. class_num = 1
  5. topLevel = False
  6. if getattr(result, ‘_testRunEntered‘, False) is False:
  7. result._testRunEntered = topLevel = True
  8. for test in self:
  9. case_num = 1
  10. if result.shouldStop:
  11. break
  12. success_flag = True
  13. while success_flag:
  14. if _isnotsuite(test):
  15. self._tearDownPreviousClass(test, result)
  16. self._handleModuleFixture(test, result)
  17. self._handleClassSetUp(test, result)
  18. result._previousTestClass = test.__class__
  19. if (getattr(test.__class__, ‘_classSetupFailed‘, False) or
  20. getattr(result, ‘_moduleSetUpFailed‘, False)):
  21. if class_num > failcount:
  22. success_flag = False
  23. else:
  24. time.sleep(5)
  25. result._previousTestClass = None
  26. print ‘类%s第%s次重新初始化执行‘%(test.__class__,class_num)
  27. class_num += 1
  28. continue
  29. if not debug:
  30. test(result)
  31. else:
  32. test.debug()
  33. if result.result[-1][0]==1 or result.result[-1][0]==2:#结果为fail和err用例判断
  34. if case_num > failcount:
  35. success_flag = False
  36. else:
  37. print ‘用例%s第%s次重新执行‘%(test,case_num)
  38. case_num += 1
  39. else:
  40. success_flag = False
  41. if topLevel:
  42. self._tearDownPreviousClass(None, result)
  43. self._handleModuleTearDown(result)
  44. result._testRunEntered = False
  45. return result

然后测试使用

alltests=suit.Suit()

alltests.addtest(WidgetTestCase("testDefaultSize"))

runner =HTMLTestRunner.HTMLTestRunner(stream=fp,verbosity=2,title=‘Android测试报告‘,description=‘用例执行情况:‘,)

runner.run(alltests)

运行完后,有失败重运行的用例都会打印在测试报告里,方便查阅

时间: 2024-10-11 21:13:02

python+selenium+unitest用例失败重运行的相关文章

python+selenium+unitest框架断言方法详细教程

常用断言 assertLocation(判断当前是在正确的页面) assertTitle(检查当前页面的 title 是否正确) assertValue(检查 input 的值, checkbox 或 radio,有值为"on"无为"off") assertSelected(检查 select 的下拉菜单中选中是否正确) assertSelectedOptions(检查下拉菜单中的选项的是否正确) assertText(检查指定元素的文本) assertTextPr

python+selenium 组织用例方式 总结

1.unittest.main() 将一个单元测试模块变为可直接运行的测试脚本,main()方法使用TestLoader类来搜索所有包含在该模块中以"test"命名开头的测试方法,并自动执行他们.执行方法的默认顺序是:根据ASCII码的顺序加载测试用例,数字与字母的顺序为:0-9,A-Z,a-z.所以以A开头的测试用例方法会优先执行,以a开头会后执行. class Test_TC_Login(unittest.TestCase): def setUp(self): self.drive

python+selenium自动化软件测试:装饰器之用例失败后截图

对于用例失败截图,很多小伙伴都希望用例执行失败的时候能自动截图,想法是很好的,实现起来并不是那么容易,这里小编分享下最近研究装饰器,打算用装饰器来实现自动截图. 一.函数作为形参1.函数的参数也可以是另外一个函数,也就是说传的参数不仅可以是常见的字符串.数字等,也可以是一个函数.2.定义aaa为一个加法函数,bbb为减法函数.3.calculate这个函数传三个参数,第一个参数是一个函数,另外两个参数是函数的两个参数. 二.万能装饰器1.由于不知道我们被调用的函数到底有几个参数,这时候就可以写一

selenium+python自动化81-html报告优化(饼图+失败重跑+兼容python2&3)【转载】

优化html报告 为了满足小伙伴的各种变态需求,为了装逼提升逼格,为了让报告更加高大上,测试报告做了以下优化: 测试报告中文显示,优化一些断言失败正文乱码问题 新增错误和失败截图,展示到html报告里 优化点击截图放大不清晰问题 增加饼图统计 失败后重试功能 兼容python2.x 和3.x 报告效果 1.生成的测试报告效果如下图,默认展示报错和异常的用例,失败重试的用例结果也会统计进去. 2.点击显示截图,可以直接显示截取的图片,无需保存到本地 table表格 1.修改表格的td后面内容,可以

python pytest测试框架介绍四----pytest-html插件html带错误截图及失败重测机制

一.html报告错误截图 这次介绍pytest第三方插件pytest-html 这里不介绍怎么使用,因为怎么使用网上已经很多了,这里给个地址给大家参考,pytest-html生成html报告 今天在这里介绍pytest生成的报告怎么带有截图,这在web自动化测试非常有用. 需求是测试用例错误就截图,方法如下: 我们要新建一个关于截图的插件文件conftest.py,注意,文件名不能变,因为pytest-html会自动找这个自己写的插件,内容如下: from selenium import web

python+selenium自动化软件测试(第4章):场景判断与封装

4.1 显示等待WebDriverWait 前言:在脚本中加入太多的sleep后会影响脚本的执行速度,虽然implicitly_wait()这种隐式等待在一定程度上节省了很多时间.但是一旦页面上某些js无法加载出来(其实界面元素已经出来了),左上角那个图标一直转圈,这时候会一直等待的.一.参数解释1.这里主要有三个参数:class WebDriverWait(object):driver, timeout, poll_frequency2.driver:返回浏览器的一个实例,这个不用多说3.ti

WEB自动化(Python+selenium)的API

在做Web自动化过程中,汇总了Python+selenium的API相关方法,给公司里的同事做了第二次培训,分享给大家                                                                                                                     WEB自动化测试培训2 课程目的 一.Webdriver API 的使用 课程内容 1    控制浏览器 Selenium 主要提供的是操作页面上各

python+selenium面试题

selenium中如何判断元素是否存在? selenium中没有提供原生的方法判断元素是否存在,一般我们可以通过定位元素+异常捕获的方式判断. # 判断元素是否存在 try: dr.find_element_by_id('none') except NoSuchElementException: print 'element does not exist' selenium中hidden或者是display = none的元素是否可以定位到? 不可以,selenium不能定位不可见的元素.dis

python3 unittest框架失败重跑加截图支持python2,python3

github源码地址下载:https://github.com/GoverSky/HTMLTestRunner_cn.git 解压文件后取出/HTMLTestRunner_cn.py文件丢进C:\Python37\Lib\site-packages目录下 如何使用报告截图重跑机制:how to use it ? 代码编写注意事项:该模板暂时不支持setup初始化驱动driver,而且初始化驱动必须取名driver,关于 HTMLTestRunner 新增参数 retry=1表示失败后重跑的次数,