导读:在本文中,将为各位开发者精选用于测试自动化的前 5 个 Python 框架的真实比较,读完后,你将发现它们的全部优点与缺点~
近几年,Python 语言在 Tiobe 排行榜上的排名一直保持名列第一。
Python 是一种开源编程语言,于 1991 年首次发布。它旨在提供一种直观、简单、人类可读、优雅且整洁的编程语言。在测试方面,代码品质是必须的,尤其是当我们团队中有手动测试人员(他们不一定具有编程技能)时,这些同学要过渡到自动化并且享受 Python 的快速学习曲线,以便快速编写用例脚本。
随着这种脚本语言在国内外的使用率越来越高,那么基于 Python 的测试自动化框架也越来越受人们的关注与欢迎。
在这些主要原因中,你会发现: Python 之禅(Python 设计哲学的 19 项指导原则),对初学者友好,对专家来说也很强大。它既面向对象又具有丰富的功能性,它拥有足够多的测试包,还有一个世界性的强大的用户社区,当然还有更多。
当我们在选择测试框架时,应该判断很多条件,如框架的脚本质量、测试用例的简单性和运行模块的技术,并同时找出它们的缺点。
以下选出测试自动化的前5名 Python 框架,以及它们之间相比的优缺点。开发者可以根据需要,选择自己理想的 Python 测试自动化框架。
1、Robot Framework
Robot Framework (RF或称Robot)主要用于验收测试驱动的开发以及测试验收,是顶级 Python 测试框架之一。虽然它是使用 Python 开发的,但也可以在基于 .net 的 IronPython 和基于 Java 的 Jython 上运行。
Robot 作为 Python 框架兼容所有平台:Windows、MacOS 或 Linux系统。
前置条件
首先,需要安装 Python 2.7.14 或更高版本,你才能使用 Robot Framework (RF)。虽然也部分兼容 Python 3.6.4,但 RF 官方博客中提供的代码片段中说,需要添加了适当的注释,包括需要一些更改才可正常运地。
此外,还需要安装“pip”或 Python 包管理器。
最后,需要下载一个开发框架。PyCharm Community Edition 是开发人员中流行的框架。但是,由于代码片段不依赖于 IDE,因此您可以使用之前使用过的任何 IDE。
Robot 框架的优缺点
让我们来看看 Robot 作为测试自动化框架相对于其他 Python 框架的优劣势:
1)优点
使用关键字驱动的测试方法,帮助测试人员轻松创建可读的测试用例来简化自动化过程。
还可以轻松使用测试数据语法。它由通用工具和测试库组成,拥有一个庞大的生态系统,其中各个元素可以在单独的项目中使用。
该框架具有高度可扩展性,并且它具有许多 API。
Robot 框架可帮助用户通过 Selenium Grid 运行并行测试。
2)缺点
Robot 框架在创建自定义 HTML 报告时很麻烦。但是,用户仍然可以使用 Robot 框架呈现 xUnit 格式的简洁报告。
Robot框架的另一个缺陷是并行测试不足。
Robot 是最适合你的 Python 测试框架吗?
如果你是自动化领域的初学者,并且开发经验较少,那么使用 Robot 作为首选 Python 测试框架比 Pytest 或 Pyunit 更容易使用,它具有丰富的内置库并且涉及使用更容易的面向测试的 DSL。
但是,如果你想用一个强大的自动化框架,最好换 Pytest 等其它框架。
2、Pytest
Pytest 可用于各种软件测试,是另一个用于测试自动化的顶级 Python 测试框架。
该工具开源且容易学习,可供 QA 团队、开发团队、个人实践小组和开源项目使用。由于其甚多有用的功能,如“断言重写”,互联网的大多数项目,包括像 Dropbox 和 Mozilla 这样的大厂,已经从 unittest (Pyunit) 切换到 Pytest。
让我们深入了解一下这个 Python 框架的特别之处。
先决条件
除了 Python 的应用知识外,Pytest 不需要任何复杂的东西。你所需要的只是一个工作桌面,它具有如下特性:
命令行界面
Python包管理器
开发IDE
Pytest的优缺点
优点
在 Python 测试社区中,在 Pytest 出现之前,开发人员是将他们的测试包含在大类中。然而Pytest 带来了一场测试革命,因为它使得以比以前更紧凑的方式编写测试套件成为可能。
其它测试工具要求开发人员或测试人员使用调试器或检查日志并检测特定值的来源。而Pytest 帮助用户编写测试用例,开发者还能将所有值存储在测试用例中,并通知你哪个值失败以及哪个值被断言。
由于不需要那么多模板代码,因此测试更容易编写和理解。
Pytest 还发布了一些有用的插件,使框架可扩展。例如,pytest-xdist可用于在不使用不同的测试运行器的情况下执行并行测试。单元测试也可以在不复制任何代码的情况下进行参数化。
为开发人员提供某些特殊例程,能够让测试用例编写更简单,更不容易出错。代码也变得更短且易于理解。
缺点
Pytest 使用特殊例程这一事实意味着你须在兼容性方面做出妥协。你将能够方便地编写测试用例,但无法将这些测试用例与任何其它测试框架一起使用。
Pytest 是最适合你的 Python 测试框架吗?
是这样的,你相当于学习一门新的成熟语言开始,但是一旦掌握了它,你将获得所有功能,例如静态代码分析、对多个 IDE 的支持,以及最重要的是,编写有效的测试用例。对于编写功能测试用例和开发复杂的框架来说,它比unittest好,但如果你的目标是开发一个简单的框架,它的优势也有点类似于Robot框架。
3、PyUnit
Unittest,即 PyUnit,是 Python 自带的用于单元测试的标准测试自动化框架。
首先,它深受 JUnit 的启发。其断言方法、清理和设置例程由基类 TestCase 提供。TestCase 子类中的每个方法的名称都以“test”开头,这允许它们作为测试用例运行。你可以使用加载方法和 TestSuite 类来分组,并加载测试。与使用 JUnit 进行 Selenium 测试一样,unittest 也具有使用和生成 XML 报告的能力,即unittest-sml-reporting。
先决条件
unittest 默认情况下与 Python 一起提供。要使用它,你需要具备 Python 框架的标准知识,如果想安装其他模块,则先安装 pip 以及用于开发的 IDE。
PyUnit的优点和缺点
优点
作为 Python 标准库的一部分,使用 Unittest 有几个优点:
开发人员不需要安装任何额外的模块,因为它是开箱即用的。Unittest是xUnit的衍生产品,其工作原理与其他xUnit框架类似。没有深厚 Python 背景的人用起来也会很舒服。
人们可以用简单的方式运行单个测试用例,你需要做的就是在终端上指定名称。它的输出也很简洁,使框架在执行测试用例时具有灵活性。
然后,测试报告会在几毫秒内生成完毕。
缺点
通常,snake_case是 Python 代码的命名方式。但是这个框架是从 Junit 中得到了很多启发,所以传统的camelCase命名方法仍然存在,这可能会令人困惑。
测试代码的意图有时会不清楚,因为它太支持抽象了。此外,它需要大量的样板代码。
PyUnit 是最适合你的 Python 测试框架吗?
根据我个人的意见和其他 Python 开发人员的意见,Pytest 引入了某些惯用语,允许测试人员以非常紧凑的方式,编写更好的自动化代码。尽管 unittest 作为默认的测试自动化框架出现,但其工作原理和命名约定与标准 Python 代码略有不同,并且需要过多的模板代码,使它成了不太受欢迎的 Python 测试自动化框架。
4、Behave
我们都知道行为驱动开发,这是一种最新的基于敏捷的软件开发方法,它鼓励开发人员、业务参与者和质量分析师相互协作。
Behave 是另一个顶级 Python 测试框架,它允许团队执行 BDD 测试而不会出现任何复杂情况。该框架的性质与用于自动化测试的 SpecFlow 和 Cucumber 非常相似。测试用例是用一种简单易读的语言编写的,然后在执行过程中固定在代码中。
先决条件
任何具有 Python 基础的人都能够使用 Behave。
在安装 Behave 之前,你要安装 Python 2.7.14 以上的版本。使用 Behave 也需要 Python 包管理器或 pip。
开发环境是你最后也是最重要的东西。我们可以使用 Pycharm 或其他你喜欢的 IDE。
Behave 的优点和缺点
让我们来看看使用 Behave 的常见优缺点:
优点
系统行为由半正式语言和领域词汇表达,使行为在组织中保持一致。在具有相似功能的不同模块上工作,开发团队能够得到适当的协调。
构建块随时准备执行各种测试用例。推理和思考体现在细节上,从而产生更好的产品规格。
由于规范的相似格式,利益相关者或经理对 QA 和开发人员的输出有更好的可视性。
缺点
Behave 唯一的缺点是它只适用于黑盒测试。
Behave 是最适合您的 Python 测试框架吗?
正如前面所说,Behave 仅适用于黑盒测试。基于 Web 测试是一个很好的例子,其用例可以用通俗易懂的语言来描述。但是对于集成测试或单元测试,Behave 并不是一个好的选择,因为冗长只会导致复杂测试场景的复杂化。开发和测试人员推荐pytest-bdd. 它是 Behave 的替代品,因为它使用 Pytest 中的所有优点并实现它以测试行为驱动的场景。
5、Lettuce
Lettuce 是另一个基于 Cucumber 和 Python 的简单易用的行为驱动自动化工具。Lettuce 主要目标是专注于行为驱动开发的常见任务,使过程更简单和有趣。
先决条件
开发者需要安装 Python 2.7.14 和 IDE。当然你可以使用 Pycharm 或选择的任何其他 喜欢的 IDE。为了运行测试,你需要安装 Python 包管理器。
Lettuce 的优缺点
优点
就像任何其他 BDD 测试框架一样,Lettuce 使开发人员能够创建多个场景并以简单的自然语言描述功能。
由于规范的格式相似,因此开发和 QA 团队得到了适当的协调。对于黑盒测试,Lettuce 对于行为驱动的测试用例非常有帮助。
缺点
使用 Lettuce 作为测试框架只有一个缺点。当执行行为驱动测试,开发团队、QA 和利益相关者之间需要非常流畅的沟通。缺席或沟通不畅会使流程变得模棱两可,任何团队都可能出现问题。
Lettuce 是最适合你的 Python 测试框架吗?
根据开发和自动化测试人员的意见汇总,Cucumber 在执行 BDD 测试时更有用。但是,如果以 Python 开发人员和 QA角色说,它没有比Pytest 的功能强大,但它有着紧凑性和易于理解的代码,这个框架还结合了行为驱动测试的一些特性。
总结
在上面的文字中,我们讨论了测试自动化的五个 Python 框架。其中Pytest、Robot 框架和 unittest 用于功能和单元测试,而 Lettuce 和 Behave 仅适用于行为驱动测试。
我们可以得出结论,对于功能测试,Pytest 是最好的。如果您不熟悉基于 Python 的自动化测试,那么 Robot 框架是一个很好的入门工具。虽然功能有限,但能让你在赛道上轻松领先。对于基于 Python 的 BDD 测试,Lettuce 和 Behave 同样出色,如果你已经有 Pytest 的使用经验,最好使用pytest-bdd.
希望从本文中帮助各位从众多 Python 测试框架中做出正确的选择,满足自己的 Python Web 自动化需求。
欢迎补充,祝测试愉快!
作者:场长
本文为 @ 万能的大雄 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。