自动化代码生成(Automation Code Generation)
目的
将测试用例转化为可执行的 pytest + pytest-bdd 自动化测试代码。代码必须与被测应用真实接口一致。
输入(固定路径)
docs/testcases/output_测试用例.md—— 测试用例(代码生成的依据)docs/reviews/output_用例评审报告.md—— 评审报告(若有未闭环的严重问题,先修正用例再生成)app/app.py—— 被测应用源码(接口路径、字段、状态码以此为准)
执行步骤
- 读取上述三份输入文件。
- 任一文件不存在时:立即停止并报告缺少的输入文件,绝不臆造接口。
- 读取
references/pytest-bdd-patterns.md,严格按其中的写法范式生成代码。 - 生成以下文件(若已存在则覆盖):
tests/features/login.feature—— 登录相关场景tests/features/user_crud.feature—— 用户管理相关场景tests/steps/test_login_steps.py、tests/steps/test_user_steps.pytests/helpers.py—— 共享工具(唯一用户名)tests/test_boundary_parametrized.py—— 纯数据驱动边界用例(@pytest.mark.parametrize)tests/conftest.py—— 首次生成时连同pytest.ini一起产出(若已存在则保持不动)
- 质量自检(必须执行):
- 运行
python -m pytest --collect-only -q,用例收集失败必须修复后重跑,直到收集成功。 - 对照
app/app.py逐接口核对:方法、路径、请求字段、成功/失败状态码。 - 断言必须同时校验状态码与响应体关键字段(code/msg/data)。
- 运行
- 完成后报告:生成的场景数、参数化用例数、步骤文件数、收集结果。
输出(固定路径)
tests/features/*.featuretests/steps/*.pytests/helpers.pytests/test_boundary_parametrized.pytests/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 唯一化)