Python 测试框架: 选择和运行测试
2009-09-06 00:00:00 来源:WEB开发网为了消除这些重复的代码,许多测试框架提供了一次性指定每个测试都需要运行的 setup 和 teardown 代码的机制。
本文讨论的三种框架 zope.testing、py.test 和 nose 都支持程序员编写的 unittest.TestCase 类中的标准 setUp() 和 tearDown() 例程。但是,除此之外,各个框架为共同 setup 代码提供的特性有显著差异。
zope.testing 本身没有为 setup 和 teardown 提供额外支持,但是前面讨论过的 z3c.testsetup 扩展会对 doctest 做一些有意思的处理。它通过在文件中寻找 :Test-Layer: 字符串来寻找测试。doctest 中的层实际上可以指定两个值之一。如果把 doctest 标为属于 unit 层,就意味着运行它不需要任何特殊的 setup。但是,如果把它标为属于 functional 层,就意味着只能在调用框架 setup 函数之后运行它。
通常情况下,:Test-Layer: functional 测试被设计为在完整地配置了 Zope Web 框架的情况下运行,因此它们可以创建测试浏览器实例、发送请求和查看 Web 框架返回的响应。通过代表 doctest 执行 setup,z3c.testsetup 可以避免在每个功能性 doctest 中复制大量样板代码。
最后一项减少样板代码的便捷特性是,可以向 z3c.testsetup 提供一个预装载到每个单元 doctest 的名称空间中的变量列表,以及另一个预装载到每个功能性 doctest 中的变量列表。这样就不需要在每个 doctest 文件的开头复制一组相同的 import 语句。
py.test 在默认情况下不提供对 setup 和 teardown 的支持。它甚至不运行标准 unittest.TestCase 类的 setUp() 和 tearDown() 方法,除非打开它的 unittest 插件。
nose 在支持共同测试代码方面是最出色的。在寻找测试时,nose 跟踪记录找到测试的上下文。它认为 unittest.TestCase 子类内部的每个测试方法是这个类 “内部的”,因此由它的 setUp() 和 tearDown() 方法控制,它还认为测试存在于它们的模块、包含模块的包以及外层所有包的 “内部”。因此,对于多层 “同心” 容器内的测试,nose 会在运行测试之前运行所有容器中的 setup 代码,在运行测试之后运行所有容器中的 teardown 代码。
- ››python操作sharepoint对象模型
- ››Python 2.6.2的.pyc文件格式
- ››Python 2.6.2的字节码指令集一览
- ››Python 测试框架: 用 Python 测试框架简化测试
- ››Python 测试框架: 寻找要测试的模块
- ››Python的class系统
- ››Python 和 LDAP
- ››python图形处理库PIL(Python Image Library)
- ››Python图形图像处理库的介绍之Image模块
- ››Python和Google AppEngine开发基于Google架构的应...
- ››Python 3 初探,第 1 部分: Python 3 的新特性
- ››python源码中中文注释的处理
赞助商链接