You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RobotFramework中获取测试失败原因及关键字入参、返回值方法问询

实现方案

直接给出修改后的可运行代码,同时覆盖你提出的两个需求点:

from robot.api import ExecutionResult, ResultVisitor

class FailureVisitor(ResultVisitor):
    def __init__(self):
        # 存储失败用例全量信息,每个元素为单个失败用例的结构化数据
        self.failed_cases = []

    def end_test(self, test):
        if test.status != "FAIL":
            return
        # 组装基础用例信息+失败原因
        case_info = {
            "case_name": test.name,
            "failure_reason": test.message, # 直接取内置属性获取明确失败原因
            "teardown_info": None
        }
        # 提取Teardown环节关键字的入参、返回值
        teardown = test.teardown
        if teardown and teardown.name:
            case_info["teardown_info"] = {
                "keyword_name": teardown.name,
                "input_args": teardown.args, # 入参列表,顺序和关键字定义的参数顺序完全一致
                "return_value": teardown.return_value, # 关键字执行后返回的实际值
                "teardown_run_status": teardown.status
            }
        self.failed_cases.append(case_info)

if __name__ == "__main__":
    # 加载执行结果文件
    result = ExecutionResult("output.xml")
    visitor = FailureVisitor()
    result.visit(visitor)
    
    # 打印提取结果示例
    for index, case in enumerate(visitor.failed_cases, 1):
        print(f"=== 第{index}个失败用例:{case['case_name']} ===")
        print(f"失败原因:{case['failure_reason']}")
        if case["teardown_info"]:
            td = case["teardown_info"]
            print(f"关联Teardown关键字:{td['keyword_name']}")
            print(f"传入参数:{td['input_args']}")
            print(f"返回结果:{td['return_value']}")
        print("-"*60)

关键逻辑说明

  • 打印具体失败原因:Robot Framework原生测试用例对象test自带message属性,直接读取即可获得执行失败时输出的提示文本,完全覆盖你需要的「Call not Found on Agent Desktop」这类明确报错场景。
  • 提取Teardown关键字信息:每个测试用例对象都关联对应的teardown执行对象test.teardown,如果需要获取Teardown内部嵌套调用的子关键字信息,遍历teardown.keywords属性即可拿到所有子关键字的参数、返回值数据。

内容的提问来源于stack exchange,提问作者Anuttam Adhwaryu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 19:51:00