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