用docstrings测试代码,docstrings是嵌入在Python代码中的字符串,其内容看上去有点像交互式的会话。这些字符串可用来检验某些假设,或者仅仅把它们看作是一些范例代码。我们需要用doctest模块运行这些测试。
让我们写一个简单的程序来计算阶乘,但该程序没有覆盖所有可能的边界条件。也就是说,某些测试项目是通不过的。
具体步骤
- 编写docstring。
编写一个包含两个测试项目的docstring,其中一个测试项目可以通过,另一个通不过。这个docstring看起来像是Python shell中的会话。
- 编写NumPy代码。
编写如下的NumPy代码。
该行代码将创建一个由顺序加1的数构成的数组,计算其累积连乘,并返回计算结果的最后一个元素。我们有意让上述代码在某些时候出错。
- 执行测试。
前面已经提到,我们需要使用doctest模块执行测试。
求阶乘和用docstring做测试的完整范例代码如下。
使用-v
选项可以获得详细的输出结果,如下所示。
攻略小结
如你所见,我们没有考虑对0和负数求阶乘的情况。实际上,由于出现了数组为空的情况,我们得到了一个索引超出边界(index out of bounds)错误。当然这个错误很容易修正,我们将在下章完成此事。