如何编写现代Python测试?
现在写Python测试的最新方法是什么?应该使用哪些模块或框架呢?
还有一个问题:doctest
测试还有用吗?还是说所有的测试都应该用更现代的测试框架来写呢?
谢谢,Boda Cydo。
5 个回答
5
我对 doctests 了解不多,但在我大学的时候,大家都在学习和使用 nose 测试。
如果你想安装 nose,可以按照以下步骤来做(我假设你是在使用 Windows 电脑):
- 先安装 setuptools
- 打开 DOS 命令提示符(开始 -> 所有程序 -> 附件 -> 命令提示符)
- 在这个步骤中,你需要连接到互联网。在 DOS 窗口中输入:C:\Python25\Scripts\easy_install nose
如果你使用的是其他操作系统,可以查看 这个网站
编辑:
我写这篇文章已经两年了。现在,我了解到一个叫做 契约设计 的编程原则。这个原则允许程序员为代码中的所有函数定义前置条件、后置条件和不变条件(统称为契约)。这样,如果有任何契约被违反,就会抛出错误。
我推荐的 Python DbC 框架叫做 PyContract,我在我的 进化编程框架 中成功使用过它。
9
使用内置的 unittest
模块依然简单又实用。其他的单元测试选项,比如 py.test
、nose
和 twisted.trial
,大多数情况下都能和 unittest
兼容。
文档测试(doctests)的价值依旧,它们非常适合用来 测试你的文档,而不是测试你的代码。如果你在文档字符串里放了代码示例,文档测试可以帮助你确保这些示例是正确的并且是最新的。没有什么比尝试复现一个示例却失败,更糟糕的事情了,结果发现其实是文档的问题。
12
通常,我们会使用内置的 unittest 模块来创建单元测试,并把这些测试组合成可以独立运行的测试套件。unittest
和 jUnit 非常相似(其实是受它的启发),所以使用起来也很简单。
如果你对最新的变化感兴趣,可以看看 Michael Foord 在 PyCon 上的演讲: