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

使用TestArchiver导入Robot Framework测试结果至PostgreSQL时遇starttime缺失错误

解决TestArchiver解析Robot Framework output.xml时的KeyError: 'starttime'问题

问题原因

TestArchiver的解析逻辑默认认为Robot Framework生成的output.xml中<status>标签包含starttime和endtime属性,但你的测试结果文件里缺失这些字段,导致解析时触发KeyError。

解决方案

1. 重新生成包含时间字段的output.xml

Robot Framework默认会在output.xml中生成starttime和endtime字段,可能是测试执行时的特殊配置或旧版本导致字段丢失:

  • 检查测试执行命令,确保没有使用--nostatusrc或其他会抑制状态时间字段的参数;
  • 升级Robot Framework到稳定版本(如4.x/5.x系列),重新执行测试生成完整的output.xml。

2. 修改TestArchiver源码做容错处理

如果无法重新生成output.xml,可修改TestArchiver的解析逻辑,兼容缺失时间字段的情况:

  1. 找到TestArchiver安装目录下的output_parser.py文件(路径示例:/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/test_archiver/output_parser.py);
  2. 定位到报错的代码段(约第91行附近),将直接调用attrs.getValue('starttime')的代码改为容错写法:
# 原代码
self.archiver.begin_status(attrs.getValue('status'), attrs.getValue('starttime'), attrs.getValue('endtime'))

# 修改后代码
starttime = attrs.get('starttime', '')
endtime = attrs.get('endtime', '')
self.archiver.begin_status(attrs.getValue('status'), starttime, endtime)
  1. 保存修改后重新执行导入命令。

3. 手动补全output.xml的时间字段

如果output.xml是静态文件,可批量为<status>标签添加starttime和endtime属性,格式需符合Robot Framework的时间规范(如YYYY-MM-DDTHH:MM:SS):

<!-- 示例修改后的<status>标签 -->
<status status="PASS" starttime="2024-05-20T10:00:00" endtime="2024-05-20T10:05:00"/>

内容的提问来源于stack exchange,提问作者Pasin Chantharathan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 05:52:42