在本文中,读者将找到用于测试自动化的前 5 个 Python/ target=_blank class=infotextkey>Python 框架的真实比较。发现他们所有的优点和缺点。
在被评为 2018 年最佳编程语言之后,Python 的排名继续上升,目前排名第三,仅次于 JAVA 和 C,根据指数由 Tiobe 出版。随着这种语言的使用越来越多,基于 Python 的测试自动化框架也越来越受欢迎。显然,在为他们的项目选择最佳框架时,开发人员和测试人员会有点困惑。在选择一个时,你应该判断很多东西,框架的脚本质量,测试用例的简单性和运行模块的技术并找出它们的弱点。这是我试图帮助您比较 2019 年测试自动化的前五名 Python 框架,以及它们与其他框架相比的优缺点。因此,您可以根据需要选择理想的 Python 测试自动化框架。
Robot Framework 主要用于验收测试驱动的开发以及验收测试,是顶级 Python 测试框架之一。虽然它是使用 Python 开发的,但它也可以在基于 .NET 的 IronPython 和基于 Java 的 Jython 上运行。Robot 作为 Python 框架兼容所有平台——windows、macOS 或 linux。
让我们来看看 Robot 作为测试自动化框架相对于其他 Python 框架的优势和劣势:
如果您是自动化领域的初学者并且开发经验较少,那么使用 Robot 作为顶级 Python 测试框架比 Pytest 或 Pyunit 更容易使用,因为它具有丰富的内置库并且涉及使用更容易的面向测试的 DSL。但是,如果你想开发一个复杂的自动化框架,最好切换到 Pytest 或任何其他涉及 Python 代码的框架。
Pytest 用于各种软件测试,是另一个用于测试自动化的顶级 Python 测试框架。该工具开源且易于学习,可供 QA 团队、开发团队、个人实践小组和开源项目使用。由于其有用的功能,如“断言重写”,互联网上的大多数项目,包括像 Dropbox 和 Mozilla 这样的大人物,已经从 unittest (Pyunit) 切换到 Pytest。让我们深入了解一下这个 Python 框架的特别之处。
除了 Python 的应用知识外,Pytest 不需要任何复杂的东西。您所需要的只是一个工作桌面,它具有:
Pytest 使用特殊例程这一事实意味着您必须在兼容性方面做出妥协。您将能够方便地编写测试用例,但无法将这些测试用例与任何其他测试框架一起使用。
好吧,您必须从学习一门成熟的语言开始,但是一旦掌握了它,您将获得所有功能,例如静态代码分析、对多个 IDE 的支持,以及最重要的是,编写有效的测试用例。对于编写功能测试用例和开发复杂的框架来说,它比unittest好,但如果你的目标是开发一个简单的框架,它的优势有点类似于Robot框架。
Unittest,即 PyUnit,是 Python 自带的用于单元测试的标准测试自动化框架。它深受 JUnit 的启发。断言方法和所有清理和设置例程由基类 TestCase 提供。TestCase 子类中的每个方法的名称都以“test”开头。这允许它们作为测试用例运行。您可以使用加载方法和 TestSuite 类来分组并加载测试。您可以一起使用它们来构建定制的测试运行器。与使用 JUnit 进行 Selenium 测试一样,unittest 也具有使用和生成 XML 报告的能力unittest-sml-reporting。
没有这样的先决条件,因为 unittest 默认情况下与 Python 一起提供。要使用它,您需要具备 Python 框架的标准知识,如果您想安装其他模块,则需要安装 pip 以及用于开发的 IDE。
作为 Python 标准库的一部分,使用 Unittest 有几个优点:
根据我个人的意见和其他 Python 开发人员的意见,Pytest 引入了某些惯用语,允许测试人员以非常紧凑的方式编写更好的自动化代码。尽管 unittest 作为默认的测试自动化框架出现,但其工作原理和命名约定与标准 Python 代码略有不同,并且需要过多的样板代码,使其成为不太受欢迎的 Python 测试自动化框架。
我们都知道行为驱动开发,这是一种最新的基于敏捷的软件开发方法,它鼓励开发人员、业务参与者和质量分析师相互协作。Behave 是另一个顶级 Python 测试框架,它允许团队执行 BDD 测试而不会出现任何复杂情况。该框架的性质与用于自动化测试的 SpecFlow 和 Cucumber 非常相似。测试用例是用一种简单易读的语言编写的,然后在执行过程中固定在代码中。行为由行为规范设计,然后这些步骤被其他测试场景重用。
任何具有 Python 基础知识的人都应该能够使用 Behave。让我们看一下先决条件:
与驱动测试框架中的所有其他行为一样,对 Behave 优势的看法因人而异。让我们来看看使用 Behave 的常见优缺点:
唯一的缺点是它只适用于黑盒测试。
好吧,正如我们所说,Behave(Python 框架)仅适用于黑盒测试。Web 测试是一个很好的例子,因为用例可以用通俗易懂的语言来描述。但是,对于集成测试或单元测试,Behave 不是一个好的选择,因为冗长只会导致复杂测试场景的复杂化。开发人员和测试人员都推荐pytest-bdd. 它是 Behave 的替代品,因为它使用 Pytest 中的所有优点并实现它以测试行为驱动的场景。
Lettuce 是另一个基于 Cucumber 和 Python 的简单易用的行为驱动自动化工具。Lettuce 的主要目标是专注于行为驱动开发的常见任务,使过程更简单和有趣。
您至少需要安装 Python 2.7.14 和 IDE。您可以使用 Pycharm 或您选择的任何其他 IDE。此外,为了运行测试,您将需要安装 Python 包管理器。
使用 Lettuce 作为 Python 框架只有一个缺点。为了成功执行行为驱动测试,开发团队、QA 和利益相关者之间的沟通是必要的。缺席或沟通不畅会使流程变得模棱两可,任何团队都可以提出问题。
根据开发人员和自动化测试人员的说法,Cucumber 在执行 BDD 测试时更有用。但是,如果我们谈论 Python 开发人员和 QA,没有比pytest-bdd. Pytest 的所有强大功能,如紧凑性和易于理解的代码,都在这个框架中实现,并结合了行为驱动测试的冗长性。
在上面的文章中,我们根据不同的测试程序讨论了 2019 年测试自动化的前五名 Python 框架。Pytest、Robot 框架和 unittest 用于功能和单元测试,而 Lettuce 和 Behave 仅适用于行为驱动测试。
从所述的功能,我们可以得出结论,对于功能测试,Pytest 是最好的。但是,如果您不熟悉基于 Python 的自动化测试,那么 Robot 框架是一个很好的入门工具。虽然功能有限,但能让你在赛道上轻松领先。对于基于 Python 的 BDD 测试,Lettuce 和 Behave 同样出色,但如果您已经有 Pytest 的使用经验,最好使用pytest-bdd.
我希望我的文章能帮助您从顶级 Python 测试框架中做出正确的选择,以满足您的 Python Web 自动化需求。测试愉快!