对于一些从事项目开发的开发人员就像是早期的拾荒者,他们需要以一种统一的方式在大型代码基上发现和运行测试,为了开发Python 测试框架,这个Python 测试框架现在仍然得到广泛使用。
专注于为中小企业提供成都网站建设、网站制作服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业轵城免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上千余家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
目前,测试的运行频率越来越高了。许多团队已经采用了连续测试,也就是对团队版本控制系统的每次签入(check-in)都要运行项目测试。随着测试驱动开发方法越来越流行。
许多开发人员在开始编写新模块的代码之前先为模块编写和运行测试。如果测试的运行时间很长,就会严重影响开发人员的生产力。因此,用尽可能多的计算能力运行测试是很有益处的。
对于小规模项目,这可能意味着使用计算机的所有 CPU 核运行多个测试进程。对于更大的项目,要配置完整的测试计算机群,要么使用专用服务器并行地运行测试,要么使用所有开发人员工作站的空闲时间。
在并行和分布式测试方面,本文讨论的三种测试框架有非常显著的差异:zope.testing 命令行有一个 -j 选项,它指定应该启动多个测试进程,而不是在同一进程中执行所有测试。因为每个进程可以在不同的 CPU 核上运行,所以如果在有四个 CPU 的计算机上运行 -j 4,就可以同时用四个 CPU 运行测试。
nose 项目报告说,他们已经把对并行测试的支持提交到项目 trunk,但是一般用户要等到下一个版本才能试用这个特性。py.test 工具支持一个多处理选项 (-n),可以像 zope.testing 一样在多个 CPU 核上运行测试。另外,它还提供管理工具,可以在整个测试服务器群中分布测试。
在这三种框架中,py.test 看起来在并行测试方面明显领先了。可以指定多个 --tx 选项,每个选项描述要运行测试的一个环境或远程服务器。而且,它实际上支持针对两个完全不同的原因分布测试!在使用 --dist=load 时,它将使用服务器群按照传统方式在多台计算机上运行测试,从而减少测试花费的时间。
但是,在使用 dist=each 时,它的做法就比较复杂了;它确保每个测试在 py.test 可用的每个测试环境中运行。这意味着 py.test 可以同时在多个 Python 解释器版本和多个操作系统上运行测试。因此,如果项目支持多个平台。
希望测试解决方案能够自动地支持多平台,而不需要通过编写脚本把测试复制到不同的平台并运行它们,那么 py.test 的这个特性是非常吸引人的。定制和可扩展性这三种测试框架都为单独的用户和整个项目提供定制能力,可以根据需要选择测试框架的行为和选项。
在 Zope 包中,指定默认选项的 buildout 常常调用 zope.testing 模块。这意味着运行测试的开发人员会得到统一的结果集。但是,如果在项目级上选择的行为无法满足他们的需要,他们仍然可以指定自己的命令行开关。
nose 框架通过用户主目录中的 nose.cfg 或 .noserc 文件支持用户个性化定制,用户可以在这些文件中指定测试结果的显示方式。对于 py.test 和 nose 框架,都可以提供针对整个项目的选项。py.test 框架会在它测试的项目中寻找conftest.py 文件,然后在这个文件中寻找针对整个项目的选项。
比如是否检测并运行 doctest 以及应该使用哪种模式检测测试文件和函数。nose 框架寻找项目范围的setup.cfg 文件(这是提供 Python 测试框架的相关信息的标准方式),然后在其中寻找 [nosetests] 节。
另外,py.test 和 nose 都支持插件,这些用户提供的模块可以安装新的命令行选项和在工具中添加新行为,但是它们提供的配置和能够实现的功能有差异。 在过去,每个 Python 测试框架都使用自己的习惯做法;
采用新一代 Python 测试框架,就能够提供简洁的习惯做法和统一的测试技术。下一篇文章 要开始研究每种框架实现的测试机制,也就是它们用来搜索测试模块和测试文件的技术。请继续阅读下一篇文章。
分享标题:浅析Python测试框架进程配置
文章分享:http://www.shufengxianlan.com/qtweb/news48/549248.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联