Python 工程交付:CLI、pytest 与同伴复现|课后复习

课堂课件 · 课前原始判断 · 本周导学

今天学会了什么

能用薄 CLI 调用已有规则与模型,按风险组织 pytest,证明测试能抓住错误,并让同伴从说明复现。

红灯、修复与回归

对应图中的每一步,找出你故意改坏规则后的失败、最小修复和全量回归记录,不能只展示最后的绿灯。

今天讲了什么(对照复习)

下面逐项对应课堂正文。先盖住右边那一栏,凭记忆回答;卡住了再翻回左边同名的小节。光说得出名字不算会,还要能讲清它会做什么、什么时候会失效。

课堂对应章节必须能解释的机制与边界
CLI、规则函数和状态各管什么;while 循环与退出条件;为什么要写 if name == “main”CLI 负责输入转换、调用、输出与退出,规则由原模块执行;while 要有退出路径,未知命令有明确反馈。入口保护让导入不启动菜单;接回 D04 文件存储时明确何时保存/恢复。
自动测试与 pytest:先准备环境,再写断言;统一测试入口,避免重复学习两套框架当前 venv 安装声明依赖,从项目根运行 python -m pytest。test_.py 和 test_ 用于收集;AAA 是准备、执行、断言。assert 比结果,pytest.raises 检查指定异常;不使用大范围捕获伪造通过。
测试隔离与 tmp_pathfixture 管理测试资源,tmp_path 为每个测试提供独立目录。每条测试准备自己的可变数据,不能依赖执行顺序,更不能改正式订单文件。
测试数量要映射业务风险;回归范围与风险对应金额、数量、资源、状态、失败无半更新和集合边界都应有代表用例;课堂不少于 10 条需对应不同风险。规则单测、模型/文件测试、CLI 行为检查各有边界。
红灯 → 最小修复 → 全量回归先预测改坏某条规则会使哪个测试失败,实际观察红灯后修复;先跑目标测试,再跑全量。导入/依赖失败是环境问题,不能冒充业务断言生效。
README 是同伴的运行合同;同伴复现说明目录、版本、依赖、数据位置、测试命令、CLI 入口、正常/失败旅程和限制。同伴只按说明执行并保留首个失败,作者补文档后再复验。
Git 让审查过程可回放用 status、diff、commit 和 log 关联红灯、修复与交付版本;提交标识还须配运行证据。单个“final”提交不能说明理解过程。

出了问题:怎么发现、怎么修、怎么验证

只在你自己那份课程副本或专用实验数据上复验,把改之前和改之后的真实结果都留下来。

风险/现象提前预防怎样发现怎样处理怎样复验
CLI 复制公式或绕过状态规则输入输出与业务实现分层相同操作从 CLI 和规则入口比较让 CLI 调用已有函数/服务正常、非法状态和未知输入行为一致
菜单无法退出或 import 等待输入明确退出命令和入口保护独立导入、启动后输入退出与未知命令修正 while 出口和 main 调用导入不阻塞,退出完成,未知命令可恢复
测试污染数据或依赖顺序用 tmp_path 和独立对象单独运行某测试与全量结果比较,检查正式文件去除共享可变状态,改用测试目录重复与不同顺序运行结果一致,正式数据不变
测试全绿却抓不住业务错误为每个用例写保护的规则在副本改坏数量/状态规则再执行补能断言业务结果与状态的用例错误实现确实变红,恢复后全量通过
同伴缺步骤或持久化声明不实README 写你实际入口和数据路径同伴新目录运行并跨进程读取补缺失说明并接回 D04 保存/恢复同伴按新说明复验;仅内存菜单明确标为演示

闭卷自测

先自己答一遍,再去运行或翻回课堂核对;不确定的地方标出来,别用 AI 的答案顶掉你自己的第一次判断。

  1. 解释 CLI、规则模块、模型和文件存储的职责;取消规则变化应改哪里?
  2. 写出一条 pytest 的 AAA 结构,并说明异常测试除了 raises 还要检查什么。
  3. tmp_path 解决哪种数据污染?为什么测试单独成功、全量失败值得警惕?
  4. 任选一条数量或状态测试,先预测怎样改坏实现能让它变红,再在副本复验。
  5. 同伴拿到全绿截图仍无法启动,你需要补哪些信息?如何证明交付的是刚测试的版本?

再看一眼真实业务

用预习真实操作手册的“入口—前置—结果—失败处理”检查自己的 README;由同伴实际使用验证可读性,不能替他填“已复现”。

今天留下什么,下节课怎么接着用

保留第一版订单工程:规则、模型、JSON 存取、薄 CLI、pytest、README、固定提交与同伴反馈。W02-D01 将已明确的对象与金额合同映射为 MySQL 表,不重新定义业务含义。

本周证明本地规则与文件路径;真实 MySQL、HTTP、Docker 和跨环境运行在 W02 验收。测试条数不等于未知风险全部消除。

本次商城补强怎样复验

新增机制商城用途防错与复验
装饰器/wraps统一报价日志返回值/名称/异常三方面对照
自定义异常与causeCLI说明输入与快照错误业务错误可解释,程序错误保留Traceback
logging找到失败阶段有拒绝日志仍须失败返回/异常,不能伪造成功
pytest/raises/tmp_path修改后重复检查故意改坏规则见红,测试文件不碰正式数据

逐项留下原输入、错误现象、最小修复和再次运行结果。若未运行,不写“问题已解决”。