已合并
feat: 新增 --append/-a 选项支持追加结果到已有CSV #131
FishPotatoChen创建于 7 天前
feat: 新增 --append/-a 选项支持追加结果到已有CSV #131
已合并
FishPotatoChen创建于 7 天前
FishPotatoChen
7 天前

当前PR是否有AI参与:

PR功能描述 / 为什么需要这个合入**:

为 TTK 结果输出新增 --append / -a 选项,支持将测试结果追加写入已有 CSV 文件,避免多次运行时反复覆盖历史结果,便于累积对比。

主要改动:

  • ttk/cli/common.py:新增 -a/--append 参数,与 -o/--output 互斥
  • ttk/cli/bridge.py:解析 append 参数并设置 append_mode 开关
  • ttk/utilities/classes.pySWITCHES 新增 append_mode 字段
  • ttk/core_modules/infra/instance_base.py:实现追加逻辑——表头匹配则追加,不匹配则覆盖;同时补全输出目录自动创建
  • 文档同步更新(SKILL.md、Task_Execution.md、任务执行.md)

该PR关联的issue

https://gitcode.com/cann/ops-test-kit/issues/84

希望检视人员了解:

  • -o-a 为互斥参数,同时指定会报错
  • 追加模式下若已有文件表头与当前预期不一致,会打印 warning 并覆盖原文件,避免数据错位

测试

  • 验证 -o 覆盖写入行为不变
  • 验证 -a 在表头匹配时正确追加结果行
  • 验证 -a 在表头不匹配时回退为覆盖并打印 warning
  • 验证 -o-a 同时指定时互斥报错

文档更新

  • 更新 .claude/skills/ttk-how-run-test/SKILL.md
  • 更新 docs/Task_Execution.md
  • 更新 docs/任务执行.md

类型标签

likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 FishPotatoChen 的贡献)
FishPotatoChenFishPotatoChen
7 天前 创建了 pull request,commit 5c512fa0
atomgit-bot
atomgit-bot
7 天前 评论:

变更摘要

本 PR 为 TTK 结果输出新增 --append / -a 选项,使测试结果可以追加写入已有 CSV 文件,避免多次运行时反复覆盖历史结果。核心逻辑是:在 ttk/cli/common.py 中通过互斥参数组声明 -o/--output-a/--append 互斥;在 ttk/cli/bridge.py 中解析追加参数并设置开关;在 ttk/utilities/classes.pySWITCHES 中新增 append_mode 字段;在 ttk/core_modules/infra/instance_base.py 中实现“表头匹配则追加、不匹配则覆盖”的写入策略,并补充输出目录自动创建。文档(SKILL.mdTask_Execution.md任务执行.md)同步更新。

主要改动

  • 新增 -a/--append 互斥参数: ttk/cli/common.py 使用 add_mutually_exclusive_group() 声明 -o/--output-a/--append 互斥,同时指定时会报错。
  • 解析追加参数并写入开关: ttk/cli/bridge.pyargs_to_switches() 中判断 args.append,将输出文件名设为追加目标并将 sw.append_mode 置为 True,否则使用覆盖模式。
  • 扩展 SWITCHES 结构: ttk/utilities/classes.pySWITCHES 的字段列表及初始化中新增 append_mode,默认值为 False
  • 实现追加/覆盖写入策略: ttk/core_modules/infra/instance_base.py 在输出 CSV 初始化时,先自动创建父目录;追加模式下若文件非空且通过 _read_existing_header() 读出的表头与当前 case_result_titles 一致,则以 a+ 模式追加并跳过表头写入,否则以 w+ 覆盖并打印 warning。
  • 补充表头读取辅助方法: ttk/core_modules/infra/instance_base.py 新增 _read_existing_header(),读取已有 CSV 首行表头,并在 UnicodeDecodeErrorcsv.ErrorOSError 等异常时返回 None
likedislike
atomgit-bot
atomgit-bot
7 天前 评论:

代码审查

✅ 未发现问题

likedislike
CANN-robotCANN-robot成员
7 天前 添加了label:ai-co-authored
CANN-robotCANN-robot成员
7 天前 添加了label:cann-cla/yes
此处折叠了106条消息 查看更多
RuiWang_成员
2 天前 评论:

/lgtm
/approve

likedislike
chenqi317成员
2 天前 评论:

/lgtm
/approve

likedislike
CANN-robotCANN-robot成员
2 天前 添加了label:lgtm
CANN-robotCANN-robot成员
2 天前 关闭了关联的issue
CANN-robotCANN-robot成员
2 天前 合入了pull request