我想问一下是否有可能将python关键字记录到log.html,如机器人关键字。如果我们从机器人文件中执行Robot / Python关键字就可以了 - 关键字有一个“节点”。当我们运行python关键字并且该关键字包含其他关键字时,这些关键字未正确记录 - 没有自己的节点。在log.html中,关键字位于一个“节点”(父节点)下,从机器人文件执行。 是否有关键字或其他方法的装饰器来“告诉”机器人该关键字内的方法是否太关键?
机器人:
+运行其他关键字
+执行命令
的Python:
- 运行一些东西....
....
预先感谢您的帮助。 Br,Tomasz
答案 0 :(得分:0)
您在评论中的形象帮助我实现了您的问题。
是否有关键字或其他方法的装饰器“告诉”机器人该关键字内的方法是否太关键?
据我所知,没有这样的装饰。 Robot不了解Python关键字的内部调用图,也无法为内部函数调用的日志生成树状结构。
我认为,有一种解决方法。记录和返回值是您可以从Python代码中与Robot Framework进行通信并告诉它的唯一方法。我建议你使用日志API来使你的Robot Framework日志更加结构化,这个装饰器是你可以做的几件事之一:
from robot.api import logger
def logged_keyword(some_function):
def wrapper():
logger.info('start of {}'.format(some_function.__name__))
some_function()
logger.info('end of {}'.format(some_function.__name__))
return wrapper
def show_my_name():
logger.info('Tommy')
print_colour()
@logged_keyword
def print_colour():
logger.info('blue')
print_other_colour()
@logged_keyword
def print_other_colour():
logger.info('white')
有一种方法可以告诉Robot Framework您正在记录HTML而不是纯文本;因此,您可以使用装饰器记录HTML标记,以帮助Robot Framework构建您的日志消息。也许Robot Framework日志的HTML源代码是一个很好的起点(在浏览器中检查元素)。
def markuped_keyword(some_function):
def wrapper():
logger.info('<div>', html=True)
some_function()
logger.info('</div>', html=True)
return wrapper
您应该优化标记,使其具有树状结构。
祝你好运!