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

pabot --testlevelsplit执行时log.html仅显示通过用例问题排查

Robot Framework Pabot 执行异常排查

问题现象

  • 执行命令pabot --testlevelsplit Tests/demo.robot运行测试时,终端明确提示用例「Fill the login form and select "Teacher" from the User option」执行失败,但生成的log.html中未展示该失败用例,仅显示通过的测试用例。
  • 上述失败用例单独运行可正常通过,执行原生Robot命令robot /Test/demo.robot跑全量用例时,3条测试用例全部通过,且所有用例都能在log.html中正常展示。

参考截图

  • 代码截图:代码截图
  • 仅显示2条通过用例的终端输出截图:终端输出截图
  • 原生Robot执行全量通过的日志截图:原生Robot执行日志截图

根因分析&解决方案

1. 日志丢失失败用例问题

该问题由Pabot旧版本的已知bug导致:当测试用例名包含双引号这类特殊字符时,--testlevelsplit模式下分片执行完成后,结果合并逻辑无法正确匹配带特殊字符的用例ID,最终导致对应用例的执行记录被丢弃,不会出现在合并后的日志文件中。
对应修复方案:

  • 执行pip install -U robotframework-pabot将Pabot升级到最新稳定版本,新版本已经修复了特殊字符用例名的结果匹配问题,升级后重新执行命令即可正常展示所有用例的执行结果。
  • 如果暂时无法升级Pabot,可以直接修改对应失败用例的名称,把名称里的双引号替换为单引号或者直接去掉,再重新执行即可解决结果丢失问题。
  • 临时排查可以在执行Pabot命令时加上--artifacts ./pabot_mid_results参数,指定中间结果存储目录,执行后可以在该目录下找到每个分片独立生成的output.xml文件,直接查看失败用例的详细报错,不受合并逻辑bug影响。

2. 并行执行失败、串行执行全过问题

该问题是典型的测试用例无隔离导致的并行执行冲突:
--testlevelsplit模式下Pabot会为每个测试用例启动独立的执行进程,如果测试用例之间共享了全局资源,比如共用同一个浏览器Driver实例、共用同一个登录态、操作同一个测试账号/测试数据没有加锁,并行执行时就会出现资源抢占,导致用例随机失败;而串行执行(包括单独跑用例、原生Robot全量跑)时不存在资源抢占,所以所有用例都能正常通过。
对应修复方案:

  • 先执行pabot --testlevelsplit --processes 1 Tests/demo.robot强制Pabot用单进程串行执行所有用例,如果此时用例全部通过且日志完整,即可确认是资源隔离问题。
  • 调整测试用例的初始化/清理逻辑,确保每个用例执行时都会启动独立的浏览器实例、使用独立的测试数据,执行完成后自动清理对应资源,避免用例之间的状态干扰。
  • 如果暂时无法完成用例隔离,可以先去掉--testlevelsplit参数,使用Pabot默认的按测试文件分片的模式执行,降低同文件下用例的资源冲突概率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 01:42:18