参考了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就弹出来了,于是问题解决
网上无此资料,特此记录,希望以后遇到这个问题的同学能得到解决