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

时间:2018-09-04 15:59:17

标签: error-handling robotframework stack-trace

我有一个名为“ 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

2 个答案:

答案 0 :(得分:3)

如果创建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

答案 1 :(得分:0)

您可能可以随时使用set suite variable更新“全局”变量。最后设置的变量值将是失败的值。

相关问题