本文主要是介绍解决RobotFramework用例执行失败自动重跑问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
使用自动化脚本进行测试,经常受环境影响等各方面导致本能成功的脚本失败,下面介绍了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. Underscoresin the name are converted to spaces. Default name iscreated from the name of the executed data source.
2)增加导入模块
reload(sys) sys.setdefaultencoding('UTF-8') from xml.dom import minidom
3)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)item.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后修改即可。
这篇关于解决RobotFramework用例执行失败自动重跑问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!