Robot Framework-失败用例自动重跑(python3版本)

前言:

        近期在用Robot Framework框架实现网站核心用例的UI自动化测试,运行过程中,自动化测试脚本容易受环境影响等因素导致脚本运行失败,因此需要实现Robot Framework失败用例自动重跑3次的功能,减少脚本运行失败率;在网上找到了实现该功能的资料,但该资料是基于python2版本的,在实践过程中发现python3版本的配置与之存在一些差异,因此记录一下实践过程,以供参考。

正文:

        修改代码如下:

1、修改文件 C:\Python36\Lib\site-packages\robot\run.py

 1)在USAGE变量里添加下面红色内容。

Options

=======   

-y --retry retry    Set the retry times if test failed. 


2)增加导入模块 (python3已经默认编码utf-8,所以不用重新设置编码 )

from xml.dom import minidom


3)RobotFramework类增加make方法

注意事项:#savefile = open(outxml,'w',encoding='UTF-8')  ;open方法需要指定utf-8编码,否则在读取ouput.xml文件生成report.html会报编码错误。

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


4)RobotFramework类的main方法

加入红色内容 self._make(settings.output)

2、robot/conf/settings.py

class RobotSettings(_BaseSettings) :修改_cli_opts字典,增加 'Retry':('retry',3)


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:

                        break

            else:

                item.visit(visitor)

4、robotide\contrib\testrunner\usages.py

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


5、在命令行或者ride运行校验失败的测试用例,正常运行并生成测试报告,则说明配置成功了。

备注:次数的配置在settings.py下retry后修改即可。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容

  • 1、文件robot\conf\settings.py 默认重试三次 在'RunEmptySuite' :...
    吴龙华Tester阅读 976评论 0 0
  • Robotframwork 自带的重试参数-R Note:out.html路径,同时要保证有log.html文件和...
    五娃儿阅读 1,735评论 1 1
  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 9,443评论 0 13
  • 我愿化身石桥 历经四季轮回 相思桥上说相思 风雨厮守待回首 阿木对我说:我喜欢上了一女子。 我:是怎样的一个女子?...
    阿木石桥阅读 205评论 0 0
  • 一棵苹果树,终于结果了。 第一年,它结了10个苹果,9个被拿走,自己得到1个。对此,苹果树愤愤不平,于是自断经脉,...
    桔蓝_8650阅读 71评论 0 0