解决RobotFramework用例执行失败自动重跑问题
2017-03-06 11:49
387 查看
使用自动化脚本进行测试,经常受环境影响等各方面导致本能成功的脚本失败,下面介绍了RFS框架下,失败重跑的方法:通过改写RobotFramework源代码增加--retry选项,实现test级别的失败用例自动再执行:失败用例会重跑N次,直至成功or 耗尽重试次数,生成的日志和报告文件中只会体现最后一次执行的结果。 修改代码如下:一、修改文件 C:\Python27\Lib\site-packages\robot\run.py 1)在USAGE变量里添加下面红色内容。
Options ======= -X --retry retry Set the retry times if test failed. -N --name name Set the name of the top level test suite. Underscores in the name are converted to spaces. Default name is created from the name of the executed data source.2)增加导入模块
reload(sys)sys.setdefaultencoding('UTF-8')from xml.dom import minidom3)RobotFramework类增加make方法
def make(self,outxml):xmldoc = minidom.parse(outxml)suiteElementList = xmldoc.getElementsByTagName('suite')mySuite = []for suiteElement in suiteElementList:if suiteElement.childNodes is not None:for element in suiteElement.childNodes:if element.nodeName == 'test':mySuite.append(suiteElement)breakfor suite in mySuite:testElements = {}for element in suite.childNodes:if element.nodeName == 'test':name = element.getAttribute('name')if testElements.get(name) == None:testElements.update({name:[element]})else:testElements.get(name).append(element)for n,el in testElements.iteritems():for i in el[0:-1]:textElement = i.nextSiblingsuite.removeChild(i)suite.removeChild(textElement)savefile = open(outxml,'w')root = xmldoc.documentElementroot.writexml(savefile)savefile.close()4)RobotFramework类的main方法,加入红色内容 self._make(settings.output)二、robot/conf/settings.py修改_cli_opts字典,增加 'Retry':('retry',3)三、robot/model/itemlist.py修改visit方法如下
def visit(self, visitor):for item in self:if self.__module__ == 'robot.model.testcase' and hasattr(visitor,"_context"):testStatus = ''for i in range(0,int(visitor._settings._opts['Retry'])):if testStatus != 'PASS':if item.name in visitor._executed_tests:visitor._executed_tests.pop(item.name)bd44item.visit(visitor)testStatus = visitor._context.variables['${PREV_TEST_STATUS}']else:breakelse:item.visit(visitor)四、robotide\contrib\testrunner\usages.py 修改USAGE字符串,增加 -X --retry retry Set the retry times if test failed.现在完成了所有配置,可以运行一下试试了。次数的配置在settings.py下retry后修改即可。
相关文章推荐
- 如何解决testng执行用例失败自动重跑问题
- 【已解决】Xen下虚拟机执行Shutdown失败,开机自动重启虚拟机,并出现页故障问题
- 如何解决testng执行用例报错自动截图问题
- Jquery的bind绑定方法 自动执行的问题解决
- 解决Linux下shell脚本文件执行失败问题
- 解决idea中执行maven命令失败的问题
- 解决lint task执行失败问题
- IE7和IE8下验证码自动刷新失败的问题及解决方法
- oracle 作业过程 解决没有自动执行的问题
- 扩展Robot Framework,实现失败用例自动再执行(失败重跑)
- [INS-30131] 执行安装程序验证所需的初始设置失败问题解决,windows下oracle安装步骤
- 修改testNG源码,实现失败用例自动再执行
- 解决域控制器证书自动注册失败的问题
- Android L 自动获取时区失败问题的解决
- 解决chrome浏览器自动翻译时总是提示“服务器出错,翻译失败”的问题
- 作业自动在每天的凌晨2点执行和解决作业不能执行的问题
- crontab不自动执行的问题解决
- NDK编译可执行文件在Android L中运行显示error: only position independent executables (PIE) are supported.失败问题解决办法。
- win7安装oracle1方法2c问题及解决- [INS-30131] 执行安装程序验证所需的初始设置失败。
- [INS-30131] 执行安装程序验证所需的初始设置失败问题解决,windows下oracle安装步骤