geekdoc-python-zh/docs/pythonlibrary/book-review-python-testing.md

48 lines
6.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 书评:Python 测试
> 原文:<https://www.blog.pythonlibrary.org/2010/03/06/book-review-python-testing/>
在 PyCon 之前Packt Publishing 的一位代表找到我,让我评论他们的一本书。他们想让我读丹尼尔·阿巴克尔的 *[Python 测试:初学者指南](http://www.amazon.com/Python-Testing-Beginners-Daniel-Arbuckle/dp/1847198848/ref=sr_1_1?ie=UTF8&s=books&qid=1267883216&sr=8-1)* 。我不太喜欢测试框架或测试驱动的开发,我认为这是一个学习方法论的好借口,看看它是否真的有价值或者只是一场炒作。这本书只有 256 页,所以我告诉 Packt 联系人,我可能需要一周左右的时间来审阅。一周后,她似乎有点担心我还没做完。因此,这是一项不全面的审查。我不喜欢被迫快速复习。我希望我的评论是全面的,并且是我能做到的最好的质量。你会看到我完成的章节的详细回顾。如果你想要一个完整的评论,我很确定 Python 星球上的其他人说他们正在做一个。
我读了 1-6 章,然后浏览了 7-10 章。作者以一种引人入胜的方式写作,章节被分成几节,这使得它很容易拿起,做一节,然后放下,而不会失去你的位置。我迟迟不看这本书的主要原因是,它有很多代码示例,需要花相当长的时间来重新输入它们。我讨厌充斥着破损代码的技术书籍,所以我想确保这本书的代码和测试能够正常工作。如果我将来要审查一本有很多代码的书,我会坚持花很多时间或者一本电子书,这样我就可以复制和粘贴代码了。
无论如何,前几章过去了,只有文本本身的小错误。内容很好,但是编辑漏掉了作者用“白色”代替“写”的简单内容。大部分章节都有这样的傻错误。真正的问题直到第 3 章才出现,这是关于用 doctest 创建单元测试的。在第 45 页,有一个代码示例,其中包含以下代码行:
```py
self.integrated_error +q= err * delta
```
由于作者推荐使用 Python 2.6,我认为“+q=”可能是某种我不知道的新格式。但这只是一个错别字。在第 48-50 页,他修改了本章前面的测试。正文明确说明,所有修改都会明确标注。他们不是,我也找不到所有的修改,使新版本的工作。我不想再次重新输入整个内容,所以我跳过了它,并决定从出版商的网站上下载作者的代码包。
这是我真正走下坡路的地方。得到代码后我注意到文件和文件夹不是按章节排列的而是按其他方法排列的。这使得我很难找到我要找的东西。我最终在“tests”文件夹中找到了 chapters 子文件夹(我想)。我计划是在代码和我的代码上做些不同。但是当我打开这本书的代码时,我注意到作者在其中包含了一堆模拟测试。他直到第 4 章才谈到模拟。我本想就此打住,告诉所有我认识的人避开这本书,但既然我免费得到了这本书,我决定继续坚持下去。
第 4 章是关于 Labix 的 [Python 模仿器](http://labix.org/mocker)包。这一章很好,我想我从中学到了很多。唯一令人沮丧的是作者提到你可以使用 easy_install 来安装这个模块,这样一来, [Nose](http://pypi.python.org/pypi/nose/0.11.3) 就可以运行了。那真是太傻了。除此之外,我认为这是一个很好的章节。
第 5 章向读者介绍了 Python 的 [unittest 库](http://docs.python.org/library/unittest.html)。我不记得我是否测试了本章中的所有代码,但是我没有注意到任何错误。我认为这是对 unittest 的一个很好的介绍,尤其是对初学者来说。
第 6 章的主题改为鼻子。正如你可能已经注意到的,从我到目前为止的描述来看,作者是相当循序渐进的。他从 doctests 开始,发展到 mock然后是 unittests然后是 Nose这是一种测试运行器和增强器。当我试着安装它的时候我的鼻子出现了奇怪的问题。出于某种原因我最终选择了 0.10.1 版本,该版本并不适用于本书中的所有命令。一旦我得到了当前的版本,一切工作得更好。我应该指出,我无法让 112 页的例子通过 note 测试。我不知道问题是什么,尽管它与 Python Mocker 模块有关。可能是我打错了什么,但是我想不通。
作者简要介绍了 Nose 的配置文件,并回顾了 nosetests 的几个命令行标志。他还介绍了夹具以及如何使用它们来增强您的测试。最后,他展示了如何使用 Nose 的模式匹配能力来运行匹配特定命名约定的测试。很酷的东西!
不过,在这一章之后,我开始认真地略读。在第七步中,他一步一步地描述了如何测试和创建个人日程安排程序。我期待着阅读这一部分,看看这是多么复杂或简单。这一部分当然有大量的代码和大量的测试(或者他可能只是重新打印了一些小部分的例子作为注释)。我不知道它是否有任何功能。
在第八章中,这本书继续讨论 Web 测试。我认为这是一个有趣的选择,因为 Twill 的网站说它已经超过 3 年没有更新了。我测试了本章中的几个例子,它们像宣传的那样工作。这一节的大部分内容都是对 Twill 命令的解释。最后一节据称展示了如何将 Twill 测试与 unittest 测试相结合。不过,我没演那部分。
第 9 章讲述了集成和系统测试。我认为在图中画同心圆来弄清楚如何为测试创建集成单元是一个好主意。这可能会吸引喜欢视觉效果的读者。唉,除了前几页,我真的什么也没读,但是看起来他在这里也使用了他的日程安排例子。
最后一章题为“其他测试工具和技术”。我认为这一章看起来相当有趣,但没有机会阅读它。现在来看文本,它似乎简要地涵盖了以下内容: [coverage.py](http://nedbatchelder.com/code/coverage/) 、版本控制挂钩(Bazaar、Mercurial、Darcs、Subversion)和 buildbot。
还有一个附录是突击测验的答案。
总的来说,我认为我读过的章节包含了很多有用的信息,而且组织得非常好。不幸的是,小的语法或句子结构问题以及偶尔出现的更大的代码/测试失败问题严重破坏了这一优势。如果它只发生一次,那么我认为可能还有其他代码或测试也出现了问题。如果是这种情况,那么我建议买二手的或者等待某种形式的打包出售。另一方面,如果这本书在第六章之后还保持原样...嗯,我想这真的没关系,因为这意味着超过一半的书有问题。
好吧。这里有一个更好的建议:找一家你附近有这本书和免费无线网络的 Borders 或 Barnes & Nobles。去那里找到那本书在你买它之前读一读看看例子。
**评分等级:1(低)- 5(高)**
代码评级= 3
编写= 4
组织= 5
平均分= 4(如果破损的代码让你烦恼,就扣一两分)