本地自测是提交前必须卡住的环节,需验证改动达成预期且未破坏已有逻辑,包括功能走通、关联功能正常、测试全通过、无调试代码,并用git diff精准定位变更范围。

本地自测不是可选项,是提交前必须卡住的环节;没跑通测试就 git commit,等于把问题打包推给队友。
本地自测要测什么?不是“能跑就行”
自测目标不是让代码不报错,而是验证改动是否真正达成预期、且没破坏已有逻辑。重点包括:
- 你改的那块功能在本地环境能完整走通(比如登录流程点完按钮能跳转、返回数据正确)
- 相关联的已有功能没被意外影响(比如改了用户模块,检查订单列表还能正常加载)
- 单元测试/接口测试用例全部通过(如果有配套测试,
npm test或pytest必须零失败) - 没有残留调试代码(
console.log、print()、临时注释掉的逻辑块)
怎么快速确认改动范围?别全量测
盲目全量回归既耗时又容易漏重点。用 Git 自带能力圈出真实变更:
- 运行
git diff --name-only HEAD查看本次修改涉及哪些文件 - 对关键业务文件,用
git diff HEAD -- path/to/file.js看具体改了哪几行 - 如果项目有覆盖率报告(如
coverage/lcov-report/index.html),打开后直接定位到修改行附近的测试覆盖情况
重点关注:被修改的函数、调用它的上游、它依赖的下游模块——这三者构成最小验证闭环。
常见自测翻车点:环境和配置差异
本地跑通,推上去 CI 失败,90% 是环境不一致导致的:
-
.env文件未统一:本地用DEV_API=https://localhost:8080,但 CI 读的是TEST_API,结果请求直接 404 - Node.js / Python 版本不匹配:本地用
v18.17.0,CI 配的是v20.12.0,某些 API 行为已变更 - 数据库状态不同步:本地清空过测试数据,但 CI 每次拉的是全量 dump,关联查询可能因缺数据而空指针
对策:把 package.json 的 engines 字段、pyproject.toml 的 requires-python 显式写死;敏感配置走 dotenv 加载,且禁止提交 .env 到仓库。
自测通过后,别直接 git commit
自测只是第一步,紧接着必须做两件事才能进提交队列:
- 再执行一次
git status,确认没误提交临时文件(如debug.log、__pycache__/) - 用
git add -p逐块确认暂存内容——尤其当改了多个文件、或同一文件里混着功能修改和格式调整时,避免把不该提交的 chunk 带进去
真正的临界点不在“代码写完”,而在“所有验证路径都闭合、所有副作用都被确认”。少踩一次坑,比多写十行日志有用得多。











