在本文中,读者将找到用于测试自动化的前 5 个 Python 框架的诚实比较。发现它们的所有优点和缺点
在2018年被评为最佳编程语言之后,Python仍然继续上升,根据Tiobe发布的指数,目前排名第三,仅次于Java和C。随着这种语言的使用越来越多,基于Python的测试自动化框架的普及也在增加。显然,开发人员和测试人员在为他们的项目选择最佳框架时会有点困惑。在选择一个时,您应该判断很多事情,框架的脚本质量,测试用例的简单性以及运行模块并找出其弱点的技术。这是我试图帮助你比较2019年测试自动化的前五大Python框架,以及它们与其他框架的优缺点。因此,您可以根据需要选择理想的 Python 框架进行测试自动化。
Robot Framework
Robot Framework
主要用于验收测试驱动的开发以及验收测试,是*的Python测试框架之一。虽然它是使用Python开发的,但它也可以在基于.net的IronPython和基于Java的Jython上运行。Robot as a Python 框架兼容所有平台——Windows、MacOS 或 Linux。
先决条件
- 首先,只有当您安装了Python 2.7.14或更高版本时,您才能使用Robot Framework
(RF)。虽然也使用了Python 3.6.4,但RF官方博客中提供的代码片段将确保添加适当的注释,包括所需的所有更改。 - 您还需要安装“pip”或Python包管理器。
- 最后,必须下载开发框架。开发人员中流行的框架是PyCharm社区版。但是,由于代码段不依赖于 IDE,因此您可以使用之前处理过的任何 IDE。
Robot Framework的优缺点
让我们来看看 Robot 作为测试自动化框架相对于其他 Python 框架的优缺点:
优点
- 使用关键字驱动的测试方法,它通过帮助测试人员轻松创建可读的测试用例,使自动化过程更简单。
- 可以轻松使用测试数据语法。
- 它由通用工具和测试库组成,拥有庞大的生态系统,可以在单独的项目中使用各个元素。
- 该框架具有高度可扩展性,因为它有许多 API。
- 机器人框架可帮助您通过硒网格运行并行测试;但是,此功能不是内置的。
缺点
- 机器人框架虽然在创建自定义HTML报告时很棘手。但是,您仍然可以使用机器人框架呈现 xUnit 格式的简短报表。
- 机器人框架的另一个缺陷是并行测试的不足。
Robot Framework是最适合你的Python测试框架吗?
如果您是自动化领域的初学者并且开发经验较少,那么使用Robot作为*Python测试框架比Pytest或Pyunit更容易使用,因为它具有丰富的构建库,并且涉及使用更容易的面向测试的DSL。但是,如果你想开发一个复杂的自动化框架,最好切换到 Pytest 或任何其他涉及 Python 代码的框架。
Pytest
用于各种软件测试,Pytest 是另一个用于测试自动化的* Python 测试框架。该工具是开源且易于学习的,可供 QA 团队、开发团队、个人实践小组和开源项目使用。由于其有用的功能,如“断言重写”,互联网上的大多数项目,包括像Dropbox和Mozilla这样的大项目,已经从unittest(Pyunit)切换到Pytest。让我们深入了解一下这个 Python 框架的特别之处。
先决条件
除了Python的工作知识之外,Pytest不需要任何复杂的东西。您所需要的只是一个具有以下功能的工作桌面:
- 命令行界面
- Python 包管理器
- 用于开发的 IDE
Pytest 的优点和缺点
优点
- 在 Python 测试社区中,在 Pytest 到来之前,开发人员将他们的测试包含在大型类中。然而,Pytest 带来了一场革命,因为它使得以比以前非常紧凑的方式编写测试套件成为可能。
- 其他测试工具要求开发人员或测试人员使用调试器或检查日志并检测某个值的来源。Pytest 可帮助您编写测试用例,使您能够将所有值存储在测试用例中,并通知您哪些值失败以及断言了哪个值。
- 这些测试更容易编写和理解,因为不需要太多样板代码。
- 夹具是通过向测试函数添加参数来使用的函数。他们的工作是返回值。在 Pytest 中,您可以通过使用一个夹具来使它们模块化。使用多个夹具有助于覆盖所有参数组合,而无需重写测试用例。
- Pytest 的开发人员发布了一些有用的插件,使框架可扩展。例如,可用于执行并行测试,而无需使用其他测试运行程序。单元测试也可以参数化,而无需复制任何代码。
pytest-xdist
- 为开发人员提供某些特殊例程,使测试用例编写更简单且不易出错。代码也变得更短且易于理解。
缺点
Pytest 使用特殊例程的事实意味着您必须在兼容性方面做出妥协。您将能够方便地编写测试用例,但无法将这些测试用例与任何其他测试框架一起使用。
Pytest 是最适合你的 Python 测试框架吗?
好吧,你必须从学习一门成熟的语言开始,但是一旦你掌握了它的窍门,你将获得所有功能,如静态代码分析,支持多个IDE,最重要的是,编写有效的测试用例。对于编写功能测试用例和开发复杂框架,它比单元测试更好,但如果您的目标是开发一个简单的框架,它的优势与机器人框架有些相似。
单元测试 (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 背景的人通常会觉得工作很舒服。
- 您可以以更简单的方式运行单个测试用例。您需要做的就是在终端上指定名称。输出也很简洁,使框架在执行测试用例时变得灵活。
- 测试报告在毫秒内生成。
缺点
- 通常,用于命名 Python 代码。但是,由于这个框架在很大程度上受到 Junit 的启发,传统的命名方法仍然存在。这可能非常令人困惑。
snake_case
camelCase
- 测试代码的意图有时会变得不明确,因为它过于支持抽象。
- 需要大量的样板代码。
PyUnit 是最适合你的 Python 测试框架吗?
根据我个人和其他 Python 开发人员的意见,Pytest 引入了某些习语,它允许测试人员以非常紧凑的方式编写更好的自动化代码。尽管unittest是作为默认的测试自动化框架提供的,但它的工作原理和命名约定与标准Python代码略有不同,并且它需要太多的样板代码,使其成为一个不太受欢迎的Python测试自动化框架。
Behave
我们都知道行为驱动开发,这是最新的基于敏捷的软件开发方法,鼓励开发人员、业务参与者和质量分析师相互协作。Beact 是另一个* Python 测试框架,它允许团队执行 BDD 测试而不会有任何复杂性。这个框架的性质与用于自动化测试的SpecFlow和Cucumber非常相似。测试用例是用简单易读的语言编写的,然后在执行过程中粘在代码上。该行为由行为规范设计,然后由其他测试方案重用这些步骤。
先决条件
任何具有Python基础知识的人都应该能够使用Behave。让我们看一下先决条件:
- 在安装 Beact 之前,您必须安装 2.7.14 以上的任何版本的 Python。
- Python 包管理器或 pip 需要使用 Beact。
- 开发环境是您需要的最后也是最重要的东西。您可以使用大多数开发人员首选的 Pycharm,也可以使用您选择的任何其他 IDE。
行为的优缺点
与驱动测试框架中的所有其他行为一样,关于 Behavioral 优势的观点因人而异。让我们来看看使用 Beact 的常见优缺点:
优点
- 系统行为由半正式语言和域词汇表表示,使行为在组织中保持一致。
- 开发团队正在处理具有相似功能的不同模块,这些团队得到了适当的协调。
- 构建块始终准备好执行各种测试用例。
- 推理和思考以细节为特色,从而产生更好的产品规格。
- 由于规范的格式相似,利益干系人或经理对 QA 和开发人员的输出有更好的了解。
缺点
唯一的缺点是它仅适用于黑盒测试。
Behave 是最适合您的* Python 测试框架吗?
好吧,正如我们所说,Behave(Python框架)仅适用于黑盒测试。Web 测试就是一个很好的例子,因为用例可以用简单的语言描述。但是,对于集成测试或单元测试,Beact 不是一个好的选择,因为冗长只会给复杂的测试场景带来麻烦。开发人员和测试人员推荐 .它是行为的替代方法,因为它使用 Pytest 中的所有优点,并将其实现为测试行为驱动的场景。pytest-bdd
Lettuce
生菜是另一种基于Cucumber和Python的简单易用的行为驱动自动化工具。生菜的主要目标是专注于行为驱动开发的常见任务,使过程更简单和有趣。
先决条件
您至少需要将 Python 2.7.14 与 IDE 一起安装。您可以使用 Pycharm 或您选择的任何其他 IDE。此外,为了运行测试,您将需要安装 Python 包管理器。
生菜的优缺点
优点
- 就像任何其他BDD测试框架一样,Lettuce使开发人员能够创建多个场景,并用简单的自然语言描述功能。
- 开发和 QA 团队得到了适当的协调,因为规范的格式相似。
- 对于黑盒测试,生菜对于运行行为驱动的测试用例非常有用。
缺点
使用Lettuce作为Python框架只有一个缺点。为了成功执行行为驱动测试,开发团队、QA 和利益干系人之间的沟通是必要的。缺席或沟通差距将使流程模棱两可,任何团队都可以提出问题。
Lettuce是最适合你的Python测试框架吗?
根据开发人员和自动化测试人员的说法,Cucumber在执行BDD测试时更有用。但是,如果我们谈论的是 Python 开发人员和 QA,没有比 .Pytest 的所有强大功能,如紧凑性和易于理解的代码,都是在这个框架中实现的,并结合了行为驱动测试的详细程度。pytest-bdd
最后
在上面的文章中,虽然 Pytest、Robot Framework 和 unittest 用于功能和单元测试,但 Lettuce 和 Bebehavior 最适合行为驱动测试。
从所述功能中,我们可以得出结论进行功能测试,Pytest 是最好的。但是,如果您不熟悉基于 Python 的自动化测试,那么 Robot 框架是一个很好的入门工具。尽管功能有限,但它将使您能够轻松地在赛道上领先。对于基于 Python 的 BDD 测试,Lettuce 和 Beact 同样出色,但如果您已经有使用 Pytest 的经验,最好使用 .pytest-bdd