python脚本自动运行失败_Python3 robot框架-自动重新运行故障案例,python3RobotFramework,失败,用例,重跑...

python3 Robot Framework-失败用例自动重跑

使用自动化脚本进行测试,经常受环境影响等各方面导致本能成功的脚本失败,下面介绍了RFS框架下,失败重跑的方法:

通过改写RobotFramework源代码增加–retry选项,实现test级别的失败用例自动再执行:失败用例会重跑N次,直至成功or 耗尽重试次数,生成的日志和报告文件中只会体现最后一次执行的结果。

修改代码如下:

一、修改文件 E:\Python37\Lib\site-packages\robot\run.py

1)增加导入模块

import imp

imp.reload(sys)

from xml.dom import minidom

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzNjc2ODI1,size_16,color_FFFFFF,t_70#pic_center

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.iteritems():

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()

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzNjc2ODI1,size_16,color_FFFFFF,t_70#pic_center

3)RobotFramework类的main方法,加入红色内容 self._make(settings.output)

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzNjc2ODI1,size_16,color_FFFFFF,t_70#pic_center

二、robot/conf/settings.py

修改_cli_opts字典,增加 ‘Retry’?‘retry’,2)

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzNjc2ODI1,size_16,color_FFFFFF,t_70#pic_center

用例失败后重新执行Retry-1次

三、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)

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzNjc2ODI1,size_16,color_FFFFFF,t_70#pic_center

四、robotide\contrib\testrunner\usages.py

修改USAGE字符串,增加 -X --retry retry Set the retry times if test failed.

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzNjc2ODI1,size_16,color_FFFFFF,t_70#pic_center

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值