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

RobotFramework重测合并结果上传XRay仅识别首次运行结果如何处理

问题原因
  • XRay 内置的 Robot Framework 结果解析器默认只会读取每个测试用例<test>标签下的第一个<status>节点的执行状态,而rebot --merge生成的合并结果中,所有重跑过的用例都会按执行顺序存储多条<status>记录,第一条是首次运行的失败状态,最后一条才是重跑通过的最终状态,因此解析时只会取到首次失败的结果。
  • 未合并的两次结果如果分开上传,XRay 默认每次上传结果都会生成独立的测试执行单,不会自动关联到同一个测试执行中,因此也不会自动合并状态。
解决方案
  • 方案1:生成仅保留最终状态的合并结果
    调整rebot合并参数,或者对合并后的output.xml做简单的预处理,删除每个测试用例下除最后一条之外的所有<status>节点,保证每个用例仅保留最终的执行状态。也可以直接使用以下合并命令,生成的结果仅保留最终状态:
    rebot --merge --output final_output.xml --rerun-merge final output.xml output2.xml
    
    如果需要手动处理xml,可以用简单的Python脚本实现:
    import xml.etree.ElementTree as ET
    tree = ET.parse('merged_output.xml')
    root = tree.getroot()
    for test in root.iter('test'):
        statuses = list(test.iter('status'))
        # 只保留最后一条status
        for s in statuses[:-1]:
            test.remove(s)
    tree.write('processed_output.xml')
    
    处理后的xml直接上传XRay即可正确识别最终结果。
  • 方案2:分两次上传时显式关联同一测试执行
    首次上传结果后,获取返回的测试执行Key(格式通常为XXX-123),第二次上传结果时在API请求中传入testExecKey参数指定该Key,XRay会自动将第二次结果合并到同一个测试执行中,并用最新的结果覆盖用例的原有状态。
  • 方案3:开启XRay插件的重跑合并配置
    如果使用CI/CD工具内置的XRay插件(如Jenkins XRay插件),直接在插件的上传配置中勾选「合并重跑结果到同一测试执行」「使用用例最后一次运行结果作为最终状态」选项,无需手动处理结果文件即可实现预期效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 01:39:03