Robotframework - 获取失败的关键字/失败的堆栈跟踪

Robotframework - get failing keyword / stack trace of failure

我有一个名为 "debug teardown" 的关键字,它会打印测试状态,然后在测试失败时运行 debuglibrary Debug 关键字。

我希望能够登录控制台 哪个关键字导致了失败,这样我就可以更有效地调试我的测试。

是否可以获取堆栈跟踪或最近的测试关键字,并将其记录到控制台?

这是我的 Debug Teardown 关键字:

Debug Teardown
    Run Keyword If Test Failed                  Log    ${TEST STATUS}: ${TEST MESSAGE}    ERROR
    Run Keyword If Test Failed                  Debug

您可以随时利用 set suite variable 更新 "global" 变量。最后设置的变量值将是失败的值。

如果您创建 listener 并将日志级别设置为 DEBUG,您可以获得更多信息。在侦听器中,您可以保存日志命令的结果,然后当关键字失败时,您可以将其打印出来或执行任何其他操作。

例如,这里有一个监听器,它会在关键字失败时将最后一条日志消息打印到标准输出:

from __future__ import print_function
class my_listener():
    ROBOT_LISTENER_API_VERSION = 2

    def __init__(self):
        self.ROBOT_LIBRARY_LISTENER = self
        self.last_log = None

    def _log_message(self, message):
        self.last_log = message

    def _end_keyword(self, name, attrs):
        if attrs['status'] == 'FAIL':
            print("\n******\n", self.last_log['message'])

您可以通过像普通库一样导入侦听器来使用它,并将日志级别设置为 DEBUG(否则您会收到错误但没有堆栈跟踪)。

示例:

*** Settings ***
Library      my_listener
Suite Setup  set log level  DEBUG

*** Test cases ***
Example
    some keyword