将Python关键字记录到log.html,如机器人关键字

时间:2017-09-06 17:57:39

标签: robotframework

我想问一下是否有可能将python关键字记录到log.html,如机器人关键字。如果我们从机器人文件中执行Robot / Python关键字就可以了 - 关键字有一个“节点”。当我们运行python关键字并且该关键字包含其他关键字时,这些关键字未正确记录 - 没有自己的节点。在log.html中,关键字位于一个“节点”(父节点)下,从机器人文件执行。 是否有关键字或其他方法的装饰器来“告诉”机器人该关键字内的方法是否太关键?

机器人:

  • 运行一些东西

    +运行其他关键字

    +执行命令

的Python:  

- 运行一些东西     

....

    

....

预先感谢您的帮助。 Br,Tomasz

1 个答案:

答案 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

您应该优化标记,使其具有树状结构。

祝你好运!