用python测试框架简化测试

用python测试框架简化测试

ID:14625323

大小:46.50 KB

页数:7页

时间:2018-07-29

用python测试框架简化测试_第1页
用python测试框架简化测试_第2页
用python测试框架简化测试_第3页
用python测试框架简化测试_第4页
用python测试框架简化测试_第5页
资源描述:

《用python测试框架简化测试》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Python测试框架最近出现了行业级的Python测试框架,这意味着Python测试可以编写得更简洁、更统一,能够产生更好的结果报告。本文介绍比较先进的测试框架并讨论它们的基本特性。  Python测试领域的蛮荒时代结束了。仅仅在几年前,几乎每个用Python构建的项目在编写和运行测试方面都采用自己的习惯做法。但是现在,这种混乱局面终于要结束了。社区中已经出现了几种出色的测试解决方案,它们为数百个流行的项目的测试套件提供约定和通用标准。  本文是三篇系列文章的第一篇,本系列要介绍新的测试框架。在本文中,将介绍三种流行的测试框架,讨论新一代工具鼓励的简单测试风格。第二篇文章发现和选择测试讨论

2、更大的问题:这些框架如何自动地发现和分类项目的测试。最后一篇文章用Python测试框架生成测试报告讨论这些框架为查看测试结果提供的强大特性。  通过学习这三种框架的通用习惯做法,您不但可以更好地理解其他程序员编写的Python包,还可以为自己的应用程序构建优雅、强大的测试套件。  候选框架:三种Python测试框架  有三种Python测试框架是目前使用最为广泛的。下面按时间次序简要介绍它们:  zope.testing  通常,从事Zope项目的开发人员就像是早期的拓荒者。他们需要以一种统一的方式在大型代码基上发现和运行测试,为此开发了zope.testing包,这个包现在仍然得到广泛使

3、用。  zope.testing包只支持unittest和doctest等传统Python测试风格,而不支持更现代的框架支持的简化风格。但是,它提供一个强大的分层系统,在这种系统中包含测试的目录可以依赖于通用的设置代码,设置代码为层(而不是每个测试)创建一个运行测试所需的环境。  py.test  2004年,HolgerKrekel把他的std包改名为‘py’,因为原来的名称常常与Python附带的标准库混淆。尽管这个包包含另外几个子包,但是现在最著名的部分只有它的py.test框架。  py.test框架建立了Python测试的新标准,目前许多开发人员都采用这种标准。它为编写测试提供了

4、优雅的符合Python风格的习惯做法,让开发人员能够以非常紧凑的风格编写测试套件。  nose  nose项目是于2005年发布的,也就是py.test改名后的一年。它是由JasonPellerin编写的,支持与py.test相同的测试习惯做法,但是这个包更容易安装和维护。尽管py.test在某些方面有所进步,目前也很容易安装,但是nose仍然保持了易用性方面的声誉。  在Python大会上,常常会看到开发人员穿着黑色T恤衫,上面印着nosetests命令,后面是表示测试成功的点号。有意思的是,随着nose的发展,在项目邮件列表上常常看到开发人员向项目负责人询问他们的项目什么时候可以转换到

5、nose。  在这三种框架中,nose看起来会成为标准,py.test的用户群比较小,但是很忠诚,zope.testing只在基于Zope框架的项目中受欢迎。但是,这三种框架都得到积极的维护,各有一些独特的特性。建议您了解它们的特性和差异,选择适合自己项目的框架。测试演化  py.test框架接受普通的Python函数作为测试,而不要求把测试放在更大更重型的测试类中,这开启了Python测试的新时代。因为nose框架支持相同的习惯做法,所以这些模式很可能越来越流行。  假设希望检查Python真假值True和False是否真的等于布尔数字1和0。py.test或nose接受并运行以下代码行

6、,作为回答此问题的有效测试:#test_new.py-simpletestsfunctionsdeftestTrue(self):    assertTrue==1deftestFalse(self):assertFalse==0  为了体会以上示例的简单性,可以对比过去的Python测试文档中复杂的示例测试,比如:#test_old.py-TheoldwayofdoingthingsimportunittestclassTruthTest(unittest.TestCase):    deftestTrue(self):        assertTrue==1    deftestFa

7、lse(self):        assertFalse==0if__name__=='__main__':unittest.main()  看到了吗?这么多代码只是为了支持两行测试代码!首先,代码需要一个import语句,这与要测试的代码完全无关,因为测试本身简单地忽略模块,只使用内置的Python值,比如True和False。另外,要创建一个类,但是它不支持或增强测试,因为测试实际上没有使用它们的self参数做任何

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。