Git 与 CI:接口回归、冲突修复与交接|学员任务书

课前预习 · 课堂课件 · 课后复习

项目任务与本人起点

任务:用本人代码证明回归与交接可靠。起点是本人 D01-D04 已运行代码与配置;保留本人代码,领取当天 student/W02-D05 增量后只合并新增文件,不用日包覆盖昨天实现。

当天新增或补写 test_ops_student.py,保留 exercises 的合并实验和既有 CI 模板 工程任务。D01 的 commerce_ops 是加入本人仓库的运营工具;之后每天继续同一个包。D05 不重复领取前四日答案,测试自己的实现。

支架与学生负责的部分

教师提供样本、接口签名、当日检查器以及既有 SQL/HTTP/容器支架。学生负责业务函数、边界处理和独立变化;完整教师实现不下发。命令在包含 commerce_ops 的本人项目根执行,现有实库和 HTTP 命令按各自 README 的工作目录运行。

python -m pytest test_ops_student.py -q

首次有效红灯应来自 STUDENT_TODO。D04/D05 若缺前一日模块,应先合并本人已完成代码;ModuleNotFoundError、缺 pytest 或缺服务都不算教学红灯。在沿用的 Python 3.12 环境执行 python -m pip install -r requirements-python.txt,安装日包冻结的 pytest。

输入、输出与不变规则

金额内部 Decimal、对外两位小数字符串。商品编号/客户编号沿用样本,不让客户端提供最终金额。新增产物:隔离回归测试、固定提交和同伴/CI 复现记录。

文件工具操作本地课程样本,不自动写商城数据库;多源查询连接器的本地替身不等于真实物流。实库只用专用实验库;不要把 mock/Fake 的通过写成 MySQL、Linux、Docker 或远端 CI 已通过。

分段任务

  1. 回归本人起点,标出输入、计算/状态变化和输出;保留修改前版本。
  2. 先运行课件的最小例,解释 pytest fixture、tmp_path、参数化、raises、monkeypatch/AsyncMock 边界;复用 Git 合并、CI SHA、接口回归 在当天任务里解决什么问题。
  3. 补当日 TODO;检查器转绿后,把功能保留在本人累计项目中。逐段修改,不让 AI 一次生成整套工程。
  4. 运行这些情况并比较预期与实际:坏单价参数化;生成器真实消费;缺配置隔离;聚合器合同替身;故意放宽规则使测试变红;修复语义冲突。
  5. 查看 AI 修改差异,至少指出一处接受或拒绝的理由。重点防止:mock 被测函数导致假绿;没消费生成器;测试共享业务文件;本地工作区与 CI 提交不同。
  6. 同伴更换一组未见输入或一个故障点,作者先预测、再独立运行和解释;同伴按 README 复现,不靠作者代敲。

提交与验收

  • 当日本人代码、运行命令、固定提交及与昨天的修改差异。
  • 正常、失败、边界和修复后回归的输入与原始结果;具体运行项见上方第 4 步。
  • 口述一个知识点为什么需要、在商城哪里用,以及一处不能由当前测试证明的结论。
  • 原 SQL/事务/API/容器/CI 任务继续按真实环境验收;未运行项填写待验证。

只贴绿色截图、复制完成版、吞失败后伪造成功,不能通过。

课堂范围与后续

只读懂现有 CI 模板并接本人的测试命令,不现场设计完整流水线;生产部署另立任务。真实 CI 无权限时不推送,保留远端待验。

W03 继续本人服务和运营模块,增加线程/进程、缓存、权限与网页交互。尚未完成的本日核心必须补验,不能默认用课后新增学时替代课堂容量。