← ClaudeAtlas

test-codegenlisted

从 target-aware case suite、task manifest 或 target/module/all selector 生成 pytest,执行 profile gate、Case IR、freshness check,并处理少量 UNPARSED 补写
tlzmw001/aitest-kit · ★ 12 · Testing & QA · score 80
Install: claude install-skill tlzmw001/aitest-kit
# 测试代码生成 将 Markdown case suite、task manifest 或 registry selector 编译为 pytest 代码。 codegen 支持四类入口: - `--suite-file <suite.yaml>`:精确处理一个 suite,诊断能力最完整。 - `--task-file <task.yaml>`:处理 task manifest 中声明的一组 suite。 - `--target <target> [--module <module>]`:从 registry 发现 active registered suites。 - `--all`:发现全部 active suites。 `--case-id` 不是 codegen 入口,属于 `aitest run/report`。各入口的诊断命令支持矩阵见 `refs/selector_reference.md`。 主路径是 target-aware suite 结构: ```text test_workspace/targets/{target}/ target.yaml, modules/{module}.yaml, fixtures/{module}.py, helpers/, profiles/profile_{module}.md test_workspace/suites/{target}/{suite}/ suite.yaml, profile_{suite}_suite.md, *.md test_workspace/generated/{target}/ ``` ## 参考文档 - `refs/emitter_rules.md` — 文件结构、命名、setup、断言生成、请求生成、case_body/flow 规则、标记处理、profile 编写指南 - `refs/selector_reference.md` — selector 能力矩阵、常用命令、聚合执行规则、能力缺口判定表 - `aitest_config/refs/config-files.md` — 判断配置字段归属时优先读取 ## 生成策略 采用 **emitter 优先 + AI 补全** 模式。生成链路 `parser -> Case IR planner -> emitter/IR renderer -> pytest`: 1. parser 把 Markdown 转为 `ParseResult`,不读 profile、不判断协议/策略。 2. Case IR planner 结合 `ParseResult`、`aitest.yaml` 和 runtime profile 生成可解释的生成计划。 3. emitter 负责装载、诊断和落盘,IR renderer 确定性生成 .py。 4. AI 只处理 emitter 输出的 `# UNPARSED ASSERTION:` 部分。 5. `@pytest.mark.manual` 和 `# SKIPPED` 用例不需要 AI 补写。 ## 新项目首次接入 如果 target/module profile 和 suite profile 都不存在,说明是新项目首次接入: 1. 检查 `aitest_config/aitest.yaml` 是否包含 `workspace`、`codegen` 配置。 2. profile 使用 Markdown 内 YAML;结构契约由 `c