如何获取日志跟踪的当前关键字名称?

Gra*_*obo 3 python keyword robotframework

我正在使用 RobotFramework 进行自动测试,需要编写一个关键字来打印足够的日志信息,但我找不到一种方法来获取日志跟踪的当前关键字名称。有谁知道如何实现它?多谢。

Bry*_*ley 5

机器人不支持获取当前关键字名称。由于您编写的代码必须从关键字运行,因此您的关键字应该知道它自己的名称是什么。

如果你用 python 编写关键字,python 库也可以是一个侦听器,可以将关键字压入堆栈并弹出堆栈。然后,您可以使用该信息来格式化错误消息。

这是一个简单的例子:

from robot.libraries.BuiltIn import BuiltIn

class ExampleLibrary(object):
    ROBOT_LISTENER_API_VERSION = 2
    ROBOT_LIBRARY_SCOPE = "GLOBAL"

    def __init__(self):
        self.ROBOT_LIBRARY_LISTENER = self
        self.keywords = []

    def _start_keyword(self, name, attrs):
        self.keywords.append(name)

    def _end_keyword(self, name, attrs):
        self.keywords.pop()

    def log_error_message(self, reason):
        message = "{keyword} failed in testcase {testcase}: {reason}"
        BuiltIn().log(message.format(
            keyword=self.keywords[-2],
            testcase=BuiltIn().get_variable_value("${TEST_NAME}"),
            reason=reason,
        ))
Run Code Online (Sandbox Code Playgroud)

这是一个示例测试用例,展示了如何使用它:

*** Settings ***
Library  ExampleLibrary.py

*** Keywords ***
A keyword
    log  inside A keyword
    Another keyword

Another keyword
    log error message  something went wrong

*** Test Cases ***
Example
    A keyword
Run Code Online (Sandbox Code Playgroud)

当您运行上述测试时,您将在日志中看到以下内容:

日志截图