RobotFramework二次开发之--输出Message Log

起因

因为自己用的是RED这个编辑器,发现每次跑完case之后,编辑器中Message Log一栏展示的log很赞,所以就想保存下来。
(不了解RED的,可以戳官网http://nokia.github.io/RED/help/了解,可以理解成RIDE的升级版,官方已经抛弃了RIDE的更新,使用了全新的RED作为替代)
而我平常运行自动化测试case呢,是通过命令行的形式运行,并集成到Jenkins中,自动运行,不走RED,所以也不会看到这一栏啦。
于是就开始探索这部分log的来源。搜索了无数资料,发现一个有用的:
https://blog.csdn.net/wyb199026/article/details/78730097
只是作者用的是RIDE,虽然原理上差不多,但是作为没有仔细研究过RF源码的我来说,还是花了点功夫的。
那么结合查找资料和自己的经验心得,我对log的理解如下:

  1. 运行时Console展示的日志。如果通过命令行运行,你可以在窗口看到这些日志。如果通过Jenkins启动任务,你可以在[Console Output]中看到这部分日志。如果和我一样用RED编辑器,你会在Console窗口看到这部分日志
  2. 执行后得到的log.html文件,这个会自动输出文件的。
  3. RED编辑器的Message Log窗口展示的日志。如图所示。


    messageLog.jpg

查找log来源

接下来看看这部分log是从哪儿得到的,查看Console窗口可以发现,RED也是通过命令行的方式来调用case的,以下是RED执行case时的命令:
Command: /usr/local/Cellar/python/3.6.4_3/bin/python -m robot.run --listener /var/folders/5y/4z20xf291sbf7l782tdtfnzc0000gn/T/RobotTempDir5265117293107482497/TestRunnerAgent.py:52030 --argumentfile /var/folders/5y/4z20xf291sbf7l782tdtfnzc0000gn/T/RobotTempDir5265117293107482497/args_9cf946db.arg /Users/yunduanapi_test
发现这里用了一个--listener参数,后面还带了一个TestRunnerAgent.py文件和相应的端口号。
使用netstat -an | grep 52030发现,当运行case的时候,这个端口是打开的
tcp4 0 0 127.0.0.1.52030 127.0.0.1.52035 ESTABLISHED
tcp4 0 0 127.0.0.1.52035 127.0.0.1.52030 ESTABLISHED
tcp4 0 0 127.0.0.1.52030 . LISTEN
说明存在socket通讯。
再去查看TestRunnerAgent.py文件,注释就写的很清楚了:

A Robot Framework listener that sends information to a socket

重写监听类

于是接下来参考前面提到的博文,以及官网对listener参数的说明:
http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#listener-interface
新建RobotListener.py,重写监听类:

   class RobotListener(object):
       ROBOT_LISTENER_API_VERSION = 2

    def start_suite(self, name, args):
        print "Starting Suite : " + name + "  " + args['source']

    def start_test(self, name, args):
        print "Starting test : " + name
        if args['template']:
            print 'Template is : ' + args['template']

    def end_test(self, name, args):
        print "Ending test:  " + args['longname']
        print "Test Result is : " + args['status']
        print "Test Time is: " + str(args['elapsedtime'])

    def log_message(self, message):
        print message['timestamp'] + " :   " + message['level'] + " : " + message['message']

OK,然后自己在命令行调用的时候,参数中带上这个类就可以啦!

使用自己的监听类,运行case

如:{WORKSPACE}是项目所在目录,刚才的监听类保存在{WORKSPACE}/RobotListener.py,要运行的case保存在{WORKSPACE}\TestCase下
就像这样,进入项目所在目录,根据你自己的项目路径,对下面的命令稍作修改,即可执行:

cd {WORKSPACE}
/usr/local/Cellar/python/3.6.4_3/bin/python -m robot.run  \
--listener RobotListener.py  \
--pythonpath {YOUR_PYTHON_PATH}   \
{WORKSPACE}\TestCase

结果如下图所示:


test_log.jpg

可以看到,这样在Console窗口就出现了我们想要的log了,和命令行日志一起展现出来。
下面还可以保存到文件,进行二次处理等,就不是什么难事了。

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