8-6<X14>roman.xml 测试优先编程
本章标题:Test-First Programming 以测试优先为原则的编程
测试优先编程
KISS 是改译的主要理由。../2006-03-22 中提出的“测试导向编程”也是个不错的名字,但我 Google 了一下,933:1,“测试优先编程”获胜。况且这样的译法并不少见(eg. broad-first search,广度优先搜索)。
频繁typo:他们
它们
怀疑是翻译时用了盲目的替换
14.1 roman.py, 第 1 阶段
Para 1:到目前为止,单元测试已经完成,是时候开始编写被单元测试测试的代码的时候
了。但在逐步完成 roman.py 的同时你会看到它们一个个地通过(测试)
。
例14.1, (1):这
就是如何定义你自己的 Python 异常。异常
(Exception)也是类,通过继承已有的异常,你可以创建自定义的异常。
例14.2上:Run romantest1.py with the -v command-line option, which will give more verbose output...
运行 romantest1.py 带有 -v 选项的命令行可以得到更详细的输出信息,……
-_-明显不通。后面作了类似的改动。
用命令行选项 -v 运行 romantest1.py 可以得到更详细的输出信息
例14.2:Output of romantest1.py against roman1.py
以 romantest1.py 测试 roman1.py 的输出
例14.2, (4):一个测试用例没能通过时,unittest 会区分是失败(failures)还是错误(errors)。
当某个测试用例没能通过时,unittest 会区分是失败(failures)还是错误(errors)。
14.2 roman.py, 第 2 阶段
例14.5, (1)toroman does, in fact, always return uppercase, because romanNumeralMap defines the Roman numeral representations as uppercase. So this test passes already.
toroman 通过,事实上其返回值总是大写的,因为 romanNumeralMap 定义的罗马字符都是以大写字母表示的。因此这个测试已经通过了。
事实上,toroman 的返回值总是大写的,因为 romanNumeralMap 定义的罗马字符都是以大写字母表示的。因此这个测试已经通过了。
例14.5, (2):……以及可能的最长的罗马数字表示(3888 对应的)
对应于 3888
例14.5, (3):However, the function does not "work" for bad values;...
但是,函数还没办法“处理”无效输入,……
翻译成中文后,引号变得多余了。
14.3 roman.py, 第 3 阶段
例14.6, (2):……第二个参数是可选的,如果给定,则
会在异常未被处理时显示于追踪信息(trackback)之中。
例14.8, (2):……当一个非整数传递给 toroman
时,int(n) <> n 检查出问题并引发 NotIntegerError 异常,……
Para -1:When all the unit tests for an entire module pass, stop coding the module.
一旦一个完整模块的单元测试通过了,停止编写这个模块。
一旦整个模块的单元测试通过了,停止编写这个模块。
14.4 roman.py, 第 4 阶段
例14.9, (1):这和 toroman 的工作模式很相像。
相似
例14.11, (2):尚不能完全相信,理论上存在这种可能性:toroman 存在错误而导致一些特定输入产生错误罗马数字表示 和 fromroman 存在相应的错误,把 toroman 错误产生的这些罗马数字错误地转换为最初的整数。
尚不能完全相信,理论上存在这种可能性:toroman 存在错误而导致一些特定输入会产生错误的罗马数字表示,并且 fromroman 也存在相应的错误,把 toroman 错误产生的这些罗马数字错误地转换为最初的整数。
14.5 roman.py, 第 5 阶段
罗马数字规则, 2.:44 表示为 XLIV (比50小10,又
比 5 小 1)
加上
4.:有五个字符不能被重复:
含五的字符不能被重复:
还请参看 re 一章。
5.:罗马数字经常
从高位到低位书写
一般
例14.13, (2):More importantly, the bad input tests pass. For instance, the malformed antecedents test checks cases like MCMC.
更重要的是,无效输入测试也通过了。例如,前面那个测试用例需要检查 MCMC 之类的情形。
更重要的是,无效输入测试也通过了。例如,上面这个用例测试了 MCMC 之类的情形。
例14.13, (3):正则表达式捕捉了所有
你在编写测试用例时所能预见的所有情况。