WEB开发网
开发学院软件开发Python Python 测试框架: 选择和运行测试 阅读

Python 测试框架: 选择和运行测试

 2009-09-06 00:00:00 来源:WEB开发网   
核心提示: 为了消除这些重复的代码,许多测试框架提供了一次性指定每个测试都需要运行的 setup 和 teardown 代码的机制,Python 测试框架: 选择和运行测试(6),本文讨论的三种框架 zope.testing、py.test 和 nose 都支持程序员编写的 unittest.TestCas

为了消除这些重复的代码,许多测试框架提供了一次性指定每个测试都需要运行的 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 代码。

上一页  1 2 3 4 5 6 7  下一页

Tags:Python 框架

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接