RobotFramework实现失败用例重跑

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.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值