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
相关产品推荐
相关产品推荐

