第一章 · 动手起步:把 TDD 当成手艺来练


第一章 · 动手起步:把 TDD 当成手艺来练

章节摘要:本章跟着灯塔小组开工。他们接到电商结算后端的需求,动手写的却是会失败的测试,而不是产品代码。沿着这条线,你装好 pytest、写出第一个红灯、读懂失败输出、用最小实现转绿,并顺手判断手头的活儿适不适合这么干。本章解决的问题是:TDD 的节律到底怎么落地,以及为什么值得落地。

一条主线

灯塔小组接到的任务是"购物车结算":空的购物车总额为零,加商品算小计,会员再打折。需求方催得急,常规做法是开个编辑器闷头写 Cart 类,写完手动点几下页面验证。本章带你走另一条路:先把"空购物车总额为零"翻译成一段 pytest 测试,运行它,亲眼看它红;再写几行刚好让测试通过的实现;最后回头看一眼刚写的代码,把不顺眼的地方收拾掉。全程不超过十分钟,但这条"红、绿、重构"的循环就是后面六章反复使用的发动机。

沿途站点

  • 先让测试失败:pytest 起步与第一次红——装好运行器,写出本册第一条失败测试,逐行解剖 pytest 的红灯输出。你会学到失败信息是"需求还没实现"的信号,而不是麻烦。
  • 从一张办公桌说起:TDD 从何而来——回到上世纪的编程现场,看测试先行的念头如何从 xUnit 一路长成 TDD,理解这套节律为什么长成今天的样子。
  • 什么活儿适合 TDD:适用场景与价值账本——TDD 不是万能钥匙。这一站给你一张适用性地图和收益代价账本,判断哪些代码值得用循环伺候,哪些硬上反而吃亏。

拐点与结论

本章最关键的认知转折在"先让测试失败"那一站:多数人以为测试是验证工具,写完代码才用;TDD 把它翻转成需求工具——测试先于实现存在,失败就是"该做的事还没做"的待办清单。想通这一点,后面所有技术(替身、金字塔、遗留代码改造)都只是这个翻转在不同场景下的延伸。翻转的另一面同样重要:从此你对"完成"的定义变了——测试绿之前,功能不存在;这不是洁癖,是把"我以为做完了"换成"机器证明做完了"。结论也很干脆:TDD 的收益来自循环转得快、转得密,而不是测试写得漂亮。

读完你应该

  • 能在本地装好 pytest 并把第一条失败测试跑出预期的失败信息;
  • 能逐行读懂 pytest 的红灯输出,说出断言失败在哪、期望值与实际值各是什么;
  • 能用最小实现把红灯转绿,并对"最小"给出自己的判断标准;
  • 能复述 TDD 的来历脉络,解释它与补测试的本质区别;
  • 能对一段新需求判断适不适合 TDD,并给出理由与替代做法。

先决条件与配套

本章不需要任何 TDD 前置知识,需要的只有三样:能读写 Python 基础语法(函数、类、断言)、终端里能执行命令、以及一个允许失败的实验心态。配置环节全在 1.1 节给出,五分钟内可以完成。概念速查表先行放在这里,读不动的读者按需回翻:

概念 一句话解释 详见
红 会失败的测试,需求的待办形态 1.1
绿 最小实现让测试通过 1.1
重构 不改行为的结构整理 1.1、第 2 章
三定律 无红灯不写码、只写刚好失败的测试、只写刚好通过的代码 1.1、2.4
适用象限 按需求清晰度与代码寿命判断值不值得 1.3

下一章的接力

本章的循环只跑了个最简场景:一步红、一步绿、还没真正动过重构。第 2 章把循环整个跑起来——红灯怎么切需求、绿灯怎么守住"最小"、重构手法怎么挑,还会用密码校验器做三轮完整演练。

作者与出处
原作者:灏天文库
来源:平台策划编纂
整理人: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U