章节摘要:本章跟着灯塔小组把循环从"最短一轮"练成稳定节律。主线是一句话从需求到红灯、从红灯到绿灯、从绿灯到一次像样的重构;沿途用购物车拆解红灯的切法,用密码校验器做三轮完整演练,最后用三角法和参数化回答"测试从什么时候开始变多"。读完你应能独立控制循环的节拍,不再出现红灯挂半天或绿灯一次跨一小时。
上一章末尾,灯塔小组的循环只转了最简一轮。本章从周二的晨会开始:产品经理丢来一句"会员密码得有点强度要求"。把这句人话变成代码,中间隔着三次循环——第一轮测"长度太短要拒绝",第二轮测"缺大写字母要拒绝",第三轮测"三类齐全给高分"。每轮都是完整的红、绿、重构,三轮下来,一个密码强度校验器凭空长出来,而且每行实现背后都站着一条曾经红过的测试。这条主线就是本章要带你走的路。
读完本章,你手里会多两样东西:一台校验器(连同它的测试集与提交历史),一套可迁移的节律口诀。前者是练习的产出,后者才是目的——把它带去任何项目都成立。
本章的认知转折藏在"绿"这个字里。多数人以为绿灯是写实现的阶段,其实它是克制训练:只写让当前测试通过的代码,多写的那半行都是未经测试批准的。第二个转折在重构段——重构不是"有空再做",而是节律的固定拍,绿了就做、做完再进下一轮。中间还有一个容易被忽略的转折:测试名与断言是写给三个月后的自己的信,红灯阶段的每个措辞决定,都在决定未来排障时的翻译成本。结论:循环快不快,取决于每轮切得多薄;节律稳不稳,取决于重构敢不敢每轮都做;而这套节律能不能持续,取决于测试写得像不像人话。
本章默认你已跑通第 1 章的最短循环:pytest 装好、测试与实现分目录、能读懂红灯输出。演练代码全部围绕密码校验器与购物车展开,不依赖任何外部服务,普通笔记本即可全程毫秒级运行。节拍建议:每节的演练别只读,亲手敲一遍——特别是 2.3 的三轮演练,它是全章的合成品,跳过它等于只看了分解动作。
循环跑顺了,新问题马上出现:测试越写越多,怎么让它们不互相污染、不重复劳动?第 3 章补齐测试的骨架功夫——断言的姿势、fixture 的装配与拆卸、测试替身的边界,让循环提速时地基不晃。