1、修改文件Python37\Lib\site-packages\robot\run.py
2、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)
break
for 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.items():
for i in el[0:-1]:
textElement = i.nextSibling
suite.removeChild(i)
suite.removeChild(textElement)
savefile = open(outxml, 'w', encoding='utf-8')
root = xmldoc.documentElement
root.writexml(savefile)
savefile.close()
3、RobotFramework中的main方法,加入红色内容:
4、Python37\Lib\site-packages\robot\conf\settings.py修改字典_extra_cli_opts,增加'Retry' : ('retry', 2),表示用例总共执行Retry次(失败用例重新执行Retry-1次)
5、修改Python37\Lib\site-packages\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:
break
else:
item.visit(visitor)
6、Python37\Lib\site-packages\robot\run.py修改USAGE字符串,-X下面增加
--retry retry Set the retry times if test failed.