DiveIntoPythonZh/2007-08-05

8-5<X13>roman.xml 单元测试

13.1 罗马数字介绍 II

  1. Para 1In previous chapters, you "dived in" by immediately looking at code and trying to understand it as quickly as possible. Now that you have some Python under your belt, you're going to step back and look at the steps that happen before the code gets written.
    在前面的章节中,你迅速“深入”并试图以最快的速度理解了这个程序。既然你已对 Python 有了一定的了解,那么接下来将回顾这个程序并从其代码被开发之前入手
    (./) 在前面的章节中,通过阅读代码,你迅速“深入”,以最快的速度理解了各个程序。既然你已对 Python 有了一定的了解,那么接下来让我们看看程序开发之前的工作

  2. roman.py 功能需求, 1.
    toroman 应该返回所有 1 到 3999 的罗马数字表示。
    (./) toroman 应该能返回 1 到 3999 中任意数的罗马数字表示。

13.2 深入

13.3 romantest.py 介绍

  1. 根据前面章节的惯例,原标题介绍 romantest.py 改为 romantest.py 介绍

13.4 正面测试

  1. 列举, Para -1隔离运行,可以与其他测试用例隔离……
    (./) 独立运行,可以与其他测试用例隔离

  2. 例13.2, (1):编写测试用例首先需要写一个类来继承 unittest 模块中的 testcase 类,……
    (./) 编写测试用例的第一步就是继承 unittest 模块中的 testcase 类

  3. 例13.2, (3)Every individual test is its own method,...
    每个独立测试都是其自己的方法
    (!) of its own... 是常见的短语,仅表示“自身”的含义 (./) 每个独立测试本身都是一个方法

  4. 例13.2, (4)Also notice that you are not trapping any exceptions when you call toroman. This is intentional. toroman shouldn't raise an exception when you call it with valid input, and these input values are all valid. If toroman raises an exception, this test is considered failed. 同样值得注意,你在调用 toroman 时没有试图捕捉任何可能发生的异常。这正是我们所希望的。以有效输入调用 toroman 不会引发任何异常,因此这些输入都是有效的。如果 toroman 引发了异常,则测试被认为失败(输入是无效的)
    (./) 同样值得注意,你在调用 toroman 时没有试图捕捉任何可能发生的异常。这正是我们所希望的。以有效输入调用 toroman 不会引发任何异常,而你看到的这些输入都是有效的。如果 toroman 引发了异常,则测试失败
    (!) 不难判定孰正孰误。

13.5 负面测试

  1. 例13.3, (1):……使用 try...except block…… (./)

  2. 同上, Line -1:…… Python 中的任何事物都是对象 (!) 为了前文一致, (./) 万物皆对象

  3. 例13.3, (2):……不论是返回了一个值或者引发其他异常……
    (./) 不论是返回了一个值还是引发其他异常

  4. 例13.4上:要求 #4 与要求 #1 的处理方法相同,测试一个已知样本中的一个个数字对。要求 #5 与 #2 和 #3的处理方法相同,通过无效输入引发 fromroman 引发恰当的异常。
    (./) 要求 #4 与要求 #1 的处理方法相同,测试一个已知样本中的一个个数字对。要求 #5 与 #2 和 #3的处理方法相同,即通过无效输入确认 fromroman 引发恰当的异常。

  5. 例13.4, (1):……总计三个自定义异常需要在 roman.py 中定义
    (./) roman.py 中一共要定义三个异常

13.6 完备性测试

  1. 部分“回旋检查”改成“完备性测试”。
  2. Para 1:你经常会发现一组代码中包含互逆函数,它们通常是转换函数,……
    (./) 你经常会发现一组代码中包含互逆的转换函数

  3. 例13.5, (1):你已经见到过这个 {X} range 函数,……

  4. 例13.6上, Line -1:既然是有必要的规定,那么也就有必要测试。
    (./) 既然有必要规定,那么也就有必要测试。

  5. 例13.6, (1)The most interesting thing about this test case is all the things it doesn't test. It doesn't test that the value returned from toroman is right or even consistent; ...
    很有意思的是这个测试用例它并不测试什么。它所测试的不是 toroman 的返回值是否正确或者一致;……
    (./) 关于这个测试用例最有趣的一点不在于它测试了什么,而是它不测试什么。它不会测试 toroman 的返回值是否正确或者一致

  6. 同上:每个测试用例都应该只回答单一的问题。 (./) 每个测试用例只回答一个的问题。

  7. 例13.6, (2):每个测试用例必须可以与其他测试用例隔离 {X} 工作,……

DiveIntoPythonZh/2007-08-05 (last edited 2009-12-25 07:09:17 by localhost)