# Automation Codegen

> 将测试用例转化为 pytest + pytest-bdd 自动化代码（Gherkin feature 文件、steps、conftest）。Use when the user asks to generate automation code, 自动化代码生成, 生成自动化脚本, or turn test cases into pytest-bdd tests.

- Skill: `naonaoxu/automation-codegen` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add naonaoxu/automation-codegen`
- Raw SKILL.md: https://api.skillmd.com/api/skills/naonaoxu/automation-codegen/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: naonaoxu (https://skillmd.com/u/naonaoxu)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/naonaoxu/automation-codegen

---


# 自动化代码生成（Automation Code Generation）

## 目的

将测试用例转化为可执行的 pytest + pytest-bdd 自动化测试代码。**代码必须与被测应用真实接口一致。**

## 输入（固定路径）

- `docs/testcases/output_测试用例.md` —— 测试用例（代码生成的依据）
- `docs/reviews/output_用例评审报告.md` —— 评审报告（若有未闭环的严重问题，先修正用例再生成）
- `app/app.py` —— 被测应用源码（**接口路径、字段、状态码以此为准**）

## 执行步骤

1. 读取上述三份输入文件。
   - **任一文件不存在时**：立即停止并报告缺少的输入文件，**绝不臆造接口**。
2. 读取 `references/pytest-bdd-patterns.md`，**严格按其中的写法范式**生成代码。
3. 生成以下文件（若已存在则覆盖）：
   - `tests/features/login.feature` —— 登录相关场景
   - `tests/features/user_crud.feature` —— 用户管理相关场景
   - `tests/steps/test_login_steps.py`、`tests/steps/test_user_steps.py`
   - `tests/helpers.py` —— 共享工具（唯一用户名）
   - `tests/test_boundary_parametrized.py` —— 纯数据驱动边界用例（@pytest.mark.parametrize）
   - `tests/conftest.py` —— 首次生成时连同 `pytest.ini` 一起产出（若已存在则保持不动）
4. **质量自检（必须执行）**：
   - 运行 `python -m pytest --collect-only -q`，用例收集失败必须修复后重跑，直到收集成功。
   - 对照 `app/app.py` 逐接口核对：方法、路径、请求字段、成功/失败状态码。
   - 断言必须同时校验状态码与响应体关键字段（code/msg/data）。
5. 完成后报告：生成的场景数、参数化用例数、步骤文件数、收集结果。

## 输出（固定路径）

- `tests/features/*.feature`
- `tests/steps/*.py`
- `tests/helpers.py`
- `tests/test_boundary_parametrized.py`
- `tests/conftest.py`（及首次生成时的 `pytest.ini`）

## 质量自检

- [ ] `pytest --collect-only` 收集成功，场景数 + 参数化用例数与用例数对应
- [ ] Gherkin 场景中文步骤与 steps 定义一一对应（无 undefined step、无孤儿步骤）
- [ ] Scenario Outline 每行 Examples 映射为独立测试
- [ ] 数据驱动分层正确：业务流程在 Gherkin，纯数据边界系列在 parametrize 模块；已知失败用例（种子 BUG）保留在 Gherkin
- [ ] 参数化 ids 携带 TC 编号前缀且全局唯一
- [ ] 断言查状态码 + 响应体（code/msg/data）
- [ ] 不使用 time.sleep；步骤间通过 ctx fixture 传值，不依赖执行顺序
- [ ] 测试之间数据不互相污染（创建用户用 tests.helpers.unique_username 唯一化）

