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

标签 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

最佳答案

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

关于error-handling - Robotframework-获取失败的关键字/失败的堆栈跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52170148/

相关文章:

node.js - 没有 Jasmine Node 错误的堆栈跟踪

python - 捕获由 python 子进程创建的进程的运行时错误

swift - “ fatal error :在展开可选值时意外发现nil”是什么意思?

c++ - 如何在Robot框架中集成C++ API?

keyword - 如何将参数嵌入到 Robot Framework 关键字名称中

python - 如何在机器人框架中保存先前的嵌入式参数实例?

android - 如何检测错误发生的原因

c# - 处理未定义抽象方法C#的调用

django - 无法通过生产中的邮件拦截404错误(debug = False)

C# 反射 StackTrace 获取值