SuperAPI AI 工具集

safe-code-change

测试与质量

查看项目

更新于 10-16 03:11

技能介绍

用途:在代码修改完成后、运行验证之前,找出受影响的测试并使其与新行为一致。它不修改生产代码,只更新测试以匹配新行为,不反向修改实现。

规则:代码修改已完成,禁止改动生产代码;只更新测试以匹配新行为;更新测试期间不做格式化或 lint 修复,这些留给验证阶段;若测试应改成什么行为不明确,应向用户询问。

主要步骤:

  1. 识别变更,使用 git diff --name-only 与 git diff --stat,列出被修改的生产文件,忽略测试文件、配置和文档。
  2. 查找受影响测试,在所有测试文件中搜索对已改动函数或类的导入,例如 rg "from ols.<changed_module> import" tests/。
  3. 分析影响,逐一检查受影响测试是否被破坏,包括签名变化(函数改名、参数增删或顺序变化)、行为变化(返回值、副作用、异常不同)、被删除代码(需移除对应测试)、新增代码(是否需要新测试,不明确时询问用户)。
  4. 更新测试,做最小修改,例如更新函数名、参数、期望值;同步改异步时添加 async/await 与 @pytest.mark.asyncio;删除已失效功能的测试;除非用户要求,不新增测试。
  5. 完成后报告更新内容,用户可再调用 validate-and-fix 执行验证。

适用场景:已有代码改动、需要让测试与行为保持一致并准备进入校验流程时。限制:不修改生产代码;不负责新测试编写与格式化;测试期望不明确时必须向用户确认;资料未提供具体环境依赖、安装方式与适用范围等更多信息。