深度剖析Python 测试框架说明介绍
创始人
2024-06-23 09:31:05
0

许多的程序员会建议使用Python 测试框架,而不是手工测试是否相等的 assert 语句,在这种情况下测试会使用 self 而不是忽略它,对于熟悉 Python 语言的开发人员,不如 Python 的操作符那么明确。

最近出现了行业级的 Python 测试框架,这意味着 Python 测试可以编写得更简洁、更统一,能够产生更好的结果报告。本文介绍比较先进的测试框架并讨论它们的基本特性。Python 测试领域的蛮荒时代结束了。

但是现在,这种混乱局面终于要结束了。社区中已经出现了几种出色的测试解决方案,它们为数百个流行的项目的测试套件提供约定和通用标准。本文是 三篇系列文章 的***篇,本系列要介绍新的测试框架。在本文中,将介绍三种流行的测试框架,讨论新一代工具鼓励的简单测试风格。

第二篇文章发现和选择测试 讨论更大的问题:这些框架如何自动地发现和分类项目的测试。***一篇文章用 Python 测试框架生成测试报告 讨论这些框架为查看测试结果提供的强大特性。

通过学习这三种框架的通用习惯做法,您不但可以更好地理解其他程序员编写的 Python 包,还可以为自己的应用程序构建优雅、强大的测试套件。候选框架:三种 Python 测试框架有三种 Python 测试框架是目前使用最为广泛的。下面按时间次序简要介绍它们:

通常,从事 Zope 项目的开发人员就像是早期的拓荒者。他们需要以一种统一的方式在大型代码基上发现和运行测试,为此开发了 zope.testing 包,这个包现在仍然得到广泛使用。

zope.testing 包只支持 unittest 和 doctest 等传统 Python 测试风格,而不支持更现代的框架支持的简化风格。但是,它提供一个强大的分层系统,在这种系统中包含测试的目录可以依赖于通用的设置代码,设置代码为层(而不是每个测试)创建一个运行测试所需的环境。

py.test2004 年,Holger Krekel 把他的 std 包改名为 ‘py’,因为原来的名称常常与 Python 附带的标准库混淆。尽管这个包包含另外几个子包,但是现在***的部分只有它的 py.test 框架。

py.test 框架建立了 Python 测试的新标准,目前许多开发人员都采用这种标准。它为编写测试提供了优雅的符合Python 测试框架的习惯做法,让开发人员能够以非常紧凑的风格编写测试套件。

nose 项目是于 2005 年发布的,也就是 py.test 改名后的一年。它是由 Jason Pellerin 编写的,支持与 py.test 相同的测试习惯做法,但是这个包更容易安装和维护。尽管 py.test 在某些方面有所进步,目前也很容易安装,但是 nose 仍然保持了易用性方面的声誉。在 Python 大会上,常常会看到开发人员穿着黑色 T 恤衫。

上面印着 nosetests 命令,后面是表示测试成功的点号。有意思的是,随着 nose 的发展,在项目邮件列表上常常看到开发人员向项目负责人询问他们的项目什么时候可以转换到 nose。

在这三种框架中,nose 看起来会成为标准,py.test 的用户群比较小,但是很忠诚,zope.testing 只在基于 Zope 框架的项目中受欢迎。但是,这三种框架都得到积极的维护,各有一些独特的特性。建议您了解它们的特性和差异,选择适合自己项目的框架。

py.test 框架接受普通的 Python 函数作为测试,而不要求把测试放在更大更重型的测试类中,这开启了 Python 测试的新时代。因为 nose 框架支持相同的习惯做法,所以这些模式很可能越来越流行。假设希望检查 Python 真假值 True 和 False 是否真的

  1. # test_old.py - The old way of doing things  
  2.  
  3. import unittest  
  4.  
  5. class TruthTest(unittest.TestCase):  
  6.     def testTrue(self):  
  7.         assert True == 1  
  8.  
  9.     def testFalse(self):  
  10.         assert False == 0  
  11.  
  12. if __name__ == '__main__':  
  13. unittest.main() 

看到了吗?这么多代码只是为了支持两行测试代码!首先,代码需要一个 import 语句,这与要测试的代码完全无关,因为测试本身简单地忽略模块,只使用内置的 Python 值,比如 True 和 False。

另外,要创建一个类,但是它不支持或增强测试,因为测试实际上没有使用它们的 self 参数做任何事情。***,需要两行固定不变的代码,这样才能从命令行运行这个测试。

【编辑推荐】

  1. 有关Python系统文件进行介绍指导
  2. 如何正确的使用Python函数
  3. Python 构建工具进行详细介绍分析
  4. PythonAndroid浅析Python优势所在
  5. 如何使用Python模块解析配置文件?

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...