首页 / 知识
4种出色的Python测试框架!
2023-11-12 13:30:00
企业软件需要测试,如同建筑物需要消防和安全检查。如果你知道某些电气状况或结构问题可能导致灾难,不会只寻找一次,而是会反复寻找。同样,如果你想防止应用软件中的某些问题或状况,为此编写测试可以确保它们永远不会进入到生产环境。
对于像Python这样的动态语言来说,测试尤为重要。如果是动态语言,大批的错误仅在运行时出现。可靠的测试套件有助于揪出这些问题,为继承代码库的人提供同样揪出问题的方法。
默认情况下,Python随带自己的单元测试框架,该框架既实用又广泛使用。但还有另外诸多方法,每种方法对于如何构建和维护单元测试有各自的理念。下面介绍了默认方法unittest以及三种最重要的替代方法。
unittest和doctest
unittest是Python标准库附带的默认测试框架,用于为Python本身创建测试套件。unittest不像一些第三方测试框架那样覆盖广泛,它本来就不是要这样——它提供了足以为大多数项目编写可靠的单元测试的功能。用过JUnit测试框架的Java开发人员应该熟悉unittest。
要创建测试套件,你要创建从unittest.TestCase派生的Python类,测试是那些类中的函数。测试可能是简单的相等或不相等断言,也可能是较为复杂的。比如说,assertRaises测试确保为特定测试引发特定异常。
测试可以分组为单个文件,也可以跨多个文件隔开、自动发现然后加以执行。你还可以为每个测试组提供fixture(安装和拆卸例程),指定在特定条件下跳过的测试,并控制测试的执行行为。
使用unittest的优点是它众所周知。就因为其他Python程序员非常熟悉测试套件的编写方式,就很难搞错unittest。
doctest也是Python标准库附带的,是补充模块。Doctest寻找Python文件中格式类似Python交互式会话的注释,并尝试运行这些注释中包含的命令以查看结果是否匹配。这样一来,可以验证函数的文档字符串中的示例输出以及函数的行为。
请注意,doctest最适合输入输出在控制台中一目了然的简单函数的测试,以及不需要大量安装或拆卸即可生成结果的测试。如果你尝试对复杂函数执行doctest,最终可能得到太过笨拙而没有用处的doctest示例。
pytest
pytest项目可以完全替换或增强unittest。Pytest运用了一种不同的理念来测试编写,从而使开发人员无需大量的脚手架代码,即可快速为项目实施小型测试套件。随着项目不断扩大,pytest可以扩大规模进行匹配,允许更多的测试功能可以逐渐添加上去。
pytest测试一开始是遵循模块中某种命名约定的紧凑函数,而不是现有测试类型类的子类。通过从命令行在模块上运行pytest或在代码内调用pytest来调用测试。你可以创建pytestfixture来安装和拆卸测试条件,并根据需要对这些fixutre规定宽泛或狭窄的范围(比如从整个测试会话范围到仅函数范围)。
你可以添加的选项数量众多且功能强大。成百上千个pytest插件让你可以将测试与许多第三方服务和操作集成起来。最后,unittest和nose测试套件也可以作为测试过程的一部分来运行,那样你可以将pytest与现有套件集成起来,不必丢弃它们、从头开始。
nose和nose2
nose及后续者nose2扩展了用unittest编写的测试,使它们更易于运行。nose本身不再加以维护;nose2延续这个项目,与Python3兼容,功能上有一些变化,但基本理念一样。我们在这里主要介绍nose2。
nose2在两个主要方面有别于unittest:它拥有插件架构,并使用.ini样式的配置文件来控制测试如何运行。默认情况下,提供并启用了许多nose2插件。.ini文件包括诸多设置,比如测试运行期间探查哪些目录、使用哪些插件。因此,可以对一组具有罕见行为的nose2测试进行精确的脚本编写,可以毫不费力地重复使用。
nose2运行时,它查找以名称test开头的模块,还有从unittest.TestCase派生的任何类,因此它可以运行通过pytest或unittest范式设计的测试。当模块以独立的方式加以执行时,nas2测试也可以配置成运行(unittest和pytest也可以做到这样)。
请注意,nose2可能不是你首次尝试测试Python应用程序的优先选择,因为它假设你在创建测试方面有一定的经验。你需要先试一试unittest。
behave
behave是使用“行为驱动开发”(BDD)范式的许多面向Python的测试框架之一。你可以用简单的英语“功能文件”描述测试的预期行为,并将测试本身写在另一个文件中,然后执行behave,观察测试运行情况,通过英语描述提供了注释。
与通常需要先编写代码的测试编写方法相比,这可能显得更死板僵硬。但是BDD方法旨在使测试更容易为编写测试的开发人员进行推理,并且使其他人(包括最终用户和其他开发人员)更容易理解测试的用途和原因。behave非常适合必须谨小慎微的项目。
behave让你可以通过指定能添加到功能文件中个别案例的“标签”或元数据,从命令行选择性地运行测试。还可以定义精细化的逐步行为,比如安装和拆卸程序。behave测试还可以与Django和FlaskWeb框架集成起来。
还有其他几种面向Python的BDD框架,比如Lettuce和Radish,但behave是使用最广泛的框架之一。
以上内容为大家介绍了4种出色的Python测试框架!,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注我们http://www.mobiletrain.org/
最新内容
相关内容
为何你的Python代码应是扁平与稀疏
为何你的Python代码应是扁平与稀疏的,代码,培训,信息,观察,设计,工具,嵌套,闻闻,程序员,沉思,Python之禅之所以得名,正是由于它那简明扼要的规Python标准库之collections模块
Python标准库之collections模块,名字,标准,信息,电话号码,培训,工厂,位置,简介,异常,对象,collections模块简介collections是Python标准库里用于业余项目的优秀 Python 库
用于业余项目的优秀 Python 库,数据,工具,项目,信息,培训,系统,地图,下来,工作,管理,1.在数据库中即时保存数据:Dataset当我们想要在不知道最python强大的标准库
python强大的标准库,标准,网络,系统,时间,通信,数字,管理,培训,文本,功能,Python拥有一个强大的标准库。Python语言的核心只包含数字、字符串如何在python代码中指定保存的文件
如何在python代码中指定保存的文件格式,代码,培训,文件格式,格式,二进制文件,文件,后缀,以上,方法,更多,python指定保存文件格式的方法:1、保Python写完代码怎么用
Python写完代码怎么用,代码,下来,数字,概念,培训,文本,模式,文件,程序,路径,python运行有两种方式,一种是在python交互式命令行下运行;另一种Python测试有什么用途
Python测试有什么用途,平台,工具,代码,官网,软件,培训,系统,人员,工作,测试,Python测试用途如下:1、使用Python+Selenium实现web端的UI自动化S如何测试Python能不能用
如何测试Python能不能用,预期,培训,测试,终端,脚本,以上,存在,版本,结果,更多,测试Python能不能使用只需要在终端输入python-V即可,若正确输出怎么把python代码打包
怎么把python代码打包,代码,培训,地址,系统,文件夹,文件,窗口,变量,外部,环境变量,打包Python代码可以使用pyinstaller安装pyinstallerpythonpython2.7如何注释代码
python2.7如何注释代码,代码,注释,位置,信息,培训,内容,中文,程序,声明,语法,确保对模块,函数,方法和行内注释使用正确的风格python中的注释python代码运行需要编译吗
python代码运行需要编译吗,代码,培训,做好,体系,平台,语言,机器码,目标,厨师,下次,有人在讨论Python代码是编译执行还是解释执行?这个问题还Python代码编辑器
Python代码编辑器,代码,平台,市场,实时,世纪,培训,插件,模型,文本,编辑,1.SublimeTextSublimeText是一款非常流行的代码编辑器,支持Python代码