RF二次开发,listerner监听器获取实施日志的坑 Listener does not have mandatory 'ROBOT_LISTENER_API_VERSION' attribute

参考了https://blog.csdn.net/wyb199026/article/details/78730097,写了个这样的listener

# listen.py
class RobotListener:
    ROBOT_LISTENER_API_VERSION = 2

    def myprint(self, data):
        if type(data)==unicode:
            print data.encode("utf-8")
        else:
            print data

    # def __init__(self):
    #     import easygui
    #     easygui.msgbox("hi")

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

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

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

    def log_message(self, message):
        self.myprint(message['timestamp'] + "\t" + message['level'] + "\t" + message['message'])

却遇到了如下错误

[ ERROR ] Taking listener 'E:\gits\cross\autotest\listen.py' into use failed: Listener 'E:\gits\cross\autotest\listen.py' does not have mandatory 'ROBOT_LISTENER_API_VERSION' attribute.

调试起来非常恶心,先看到官网上用的是PythonListener,就改为PythonListener,依然报错

然后我学官网http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#listener-version-3,把ROBOT_LISTENER_API_VERSION = 2放在class外面,不报错了,但是没有日志输出
以为是我延迟了读取管道的缘故(延迟至进程结束),就把日志输出重定向到文件,并实时读取文件,结果发现文件没有创建
再次做调试,在监听类的__init__里写了这样的代码(就是注释掉的那些,easygui模块需要pip安装)
import easygui
easygui.msgbox(“hi”)
发现窗体并没弹出,自此严重怀疑监听类根本没被初始化

后来折腾中突然想起,RF里面自己开发测试库,要求测试库的类的名字和文件名一样.
而我的文件名取的是listener.py,就把类名从RobotListener改成了listener
然后msgbox就弹出来了,于是问题解决

网上无此资料,特此记录,希望以后遇到这个问题的同学能得到解决

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值