用途:在代码修改完成后、运行验证之前,找出受影响的测试并使其与新行为一致。它不修改生产代码,只更新测试以匹配新行为,不反向修改实现。
规则:代码修改已完成,禁止改动生产代码;只更新测试以匹配新行为;更新测试期间不做格式化或 lint 修复,这些留给验证阶段;若测试应改成什么行为不明确,应向用户询问。
主要步骤:
- 识别变更,使用 git diff --name-only 与 git diff --stat,列出被修改的生产文件,忽略测试文件、配置和文档。
- 查找受影响测试,在所有测试文件中搜索对已改动函数或类的导入,例如 rg "from ols.<changed_module> import" tests/。
- 分析影响,逐一检查受影响测试是否被破坏,包括签名变化(函数改名、参数增删或顺序变化)、行为变化(返回值、副作用、异常不同)、被删除代码(需移除对应测试)、新增代码(是否需要新测试,不明确时询问用户)。
- 更新测试,做最小修改,例如更新函数名、参数、期望值;同步改异步时添加 async/await 与 @pytest.mark.asyncio;删除已失效功能的测试;除非用户要求,不新增测试。
- 完成后报告更新内容,用户可再调用 validate-and-fix 执行验证。
适用场景:已有代码改动、需要让测试与行为保持一致并准备进入校验流程时。限制:不修改生产代码;不负责新测试编写与格式化;测试期望不明确时必须向用户确认;资料未提供具体环境依赖、安装方式与适用范围等更多信息。