用于自动化测试的 7 大 Python 框架
根据 StackoverFlow 的开发者调查,Python 是 2020 年增长最快的编程语言。在总体排名中,Python 在最受欢迎的语言中排名第三。 Python 流行的几个原因之一是测试自动化框架的广泛支持。大多数流行的 Python 框架都兼容 Selenium 测试自动化框架,用于Selenium Python 测试&跨浏览器测试
! swz 100105 swz 100106 swz 100104
随着 2020 年Python 自动化测试框架数量的增加,选择适合您要求的理想Selenium 测试自动化框架变得很有必要。除了 2020 年默认的 Python 测试框架 unittest(或 PyUnit)之外,还有更多 Python 框架可供选择。
以下是 2020 年实现您的 Selenium 测试自动化需求的顶级 Python 测试框架。
1. PyTest

PyTest 是一个开源的Python web 自动化框架,主要用于单元测试。 2020 年这个特殊的 Python 测试框架是可扩展的,因为它对于编写简单的自动化测试以及应用程序和库的复杂功能测试很有用。 PyTest 很容易上手。它与 Python 3.5+ 和 PyPy 3 兼容。
使用 PyTest 编写的测试套件更紧凑,因为不需要大量样板代码,也不需要将测试包含到大型测试类中。与要求测试以 test_ 开始(或以 _test 结束)的默认 Python 测试框架 2020 不同,PyTest 中没有固定的测试用例命名法。这是因为 PyTest 具有支持自动发现测试模块和功能的内置功能。
由于引入了有用的断言重写功能,有助于提供有关失败的断言语句的详细信息,因此无需记住 self.assert* 名称。
PyTest官网 —https://www.pytest.org/
GitHub上的PyTest —https://github.com/pytest-dev/pytest/
以下是有关 PyTest 项目的详细信息:
叉子 – 1.3K
拉取请求 – 49
已加星标 - 5.7K
贡献者 - 504
使用者 – 161K
提交 – 12,079
观看此视频,了解机器人自动化框架中 .robot 文件的各个部分及其实际演示。
https://youtu.be/MonFBTPtiC8
本赛普拉斯测试自动化教程将帮助您了解赛普拉斯自动化的好处。
有什么前提条件?
Python 测试框架 PyTest 最好的部分是它涉及到一个温和的学习曲线。开始使用 PyTest 很容易,尤其是如果您对任何现有的 Python 测试框架有工作知识。
您只需要一个用于开发的 Python IDE 和一个用于安装 PyTest 的 Python 包管理器。
PyTest 的优点
PyTest 框架有很多优点,主要有以下几点:
-
兼容其他Python测试框架如unittest(或PyUnit)。
-
除了简单的测试,PyTest 还可以用于创建复杂的功能测试用例。
-
将使用其他 Python 测试框架的现有实现移植到 PyTest 所需的工作量更少。
-
PyTest 可用于实践 TDD(测试驱动开发)的项目以及开源项目。
-
PyTest 有助于创建有效的测试用例(和测试套件),因为它支持参数化。使用参数化,可以使用不同的输入配置执行测试用例,从而最大限度地减少代码重复。
-
使用 PyTest 的测试很容易理解,因为样板代码很少。
-
它支持固定装置和类,因此通用测试对象在模块/类/函数/会话的生命周期中可用。
-
PyTest 是可扩展的,Python 测试框架已经拥有丰富的插件架构。目前有 315 多个带有 PyTest 的外部插件。
-
通过pytest-xdist插件支持并行测试执行。
-
PyTest 中的断言提供了有关失败场景的详细信息。
PyTest 作为 Python 测试框架的缺点
PyTest 与其他 Selenium Python 测试框架不兼容,因为它使用自己的特殊例程进行开发。重写完整代码是将使用 PyTest 的现有实现移植到其他 Python 测试框架的唯一方法。
PyTest 是不是最适合你的 Python 测试框架?
如果您正在开发复杂的功能测试,您可以选择 PyTest 而不是默认的 Selenium Python 框架,即 unittest。夹具、类以及参数化对于自动化测试开发非常方便。
该认证面向希望在使用 Python 进行 Selenium 自动化测试方面开发高级实践专业知识并将其职业提升到新水平的专业人士。
以下是 LambdaTest 的 Selenium Python 101 认证的简要介绍:
https://youtu.be/KeSWHW4Lx1E
2.表现
! zwz 100135 zwz 100136 zwz 100134
Behave 是广泛使用的Selenium Python测试框架之一,用于 BDD(业务驱动开发)测试。 Behave 使用 Gherkin 语言开发场景和功能文件。由于 Gherkin 使用简单易读的语言进行测试用例开发,因此也可以为团队中的非技术人员创建测试,从而实现业务驱动开发。
随着工程师、经理、质量分析师、业务开发经理等之间的协作增加,BDD 框架的使用可以促进团队成员之间的沟通。如果您对其他 BDD 框架(例如 SpecFlow、Cucumber、Cucumber-JVM 等)有一定的应用知识,那么开始使用行为驱动的 Python 测试框架(例如 Behave)相对容易。
由于 Behave 是一个 BDD 框架,它与其他 Selenium Python 测试框架如 unittest(或 PyUnit)、PyTest 等有着本质的不同。 Behave 的最新版本是 1.2.7.dev1
Behave官网 —https://behave.readthedocs.io/en/latest/
在 GitHub 上表现 —https://github.com/behave/behave
以下是有关 Behave 框架的详细信息:
叉子 – 490
拉取请求 - 12
加星标 – 2K
贡献者 - 62
已观看 – 118
提交 – 1,517
有什么前提条件?
安装 Behave 需要 Python 2.7.14 以上。使用任何 BDD 工具的先前经验可以方便地开始使用 Behave 框架。
行为的优点
以下是使用 Behave 框架进行测试自动化的优势:
-
如果团队之前有任何现有 BDD 框架(如 SpecFlow、Cucumber 等)的经验,则很容易上手。
-
环境功能、配置设置、固定装置等的可用性使设置和清理变得容易。
PyCharm(专业版)支持* Behave。
-
支持与Django、Flask等其他Web框架集成。
-
它具有出色的支持文档和教程,可以帮助您开始使用行为框架。
-
添加新的测试用例更简单,因为测试由不同的场景步骤、场景结果、特征文件等组成。
-
除了技术人员,非技术人员也可以在测试用例(或测试场景)开发中发挥至关重要的作用。
使用 LambdaTest 云在 50 多种浏览器/操作系统组合上立即运行您的Playwright 自动化测试脚本。
行为的缺点
以下是在 Selenium 测试自动化中使用行为框架的一些主要缺点:
-
PyCharm(社区版)不支持。
-
在 Behave 的不同特征文件(.feature)之间共享场景步骤(_steps.py)非常困难。
-
没有对并行测试执行的内置支持,这是自动化浏览器测试的主要要求之一。并行测试执行的解决方法需要安装其他软件,如流行讨论线程此处和此处中所述。
-
Behave 只能用于黑盒测试。
-
促进并行测试执行的插件behave-parallel 现在已弃用。
Behave 是最适合您的 Python 测试框架吗?
Behave 框架适用于 Web 测试,因为可以使用简单的英语语言开发测试场景。另一方面,behaviour 对于集成测试并不理想,因为冗长会导致测试场景不必要的复杂化。
许多开发人员更喜欢 pytest-bdd,它是 pytest.runner 的 BDD 库,因为它使用了 pytest 中可用的良好功能,因此适合 BDD 测试。
3.机器人
! swz 100171 swz 100172 swz 100170
Robot 是另一个广泛使用的 Python 测试框架,用于 Selenium 测试自动化、RPA(机器人流程自动化)和 ATDD(验收测试驱动开发)。它是一个开源且可扩展的 Python 测试框架。它可以很容易地与任何其他工具集成,因此它非常适合创建灵活的自动化测试解决方案。
观看此视频,了解用于自动化测试的机器人框架的基础知识。该视频将通过实时示例让您了解机器人框架的各种功能。
https://youtu.be/yf8AJqUc5Uo
Python 测试框架独立于操作系统和应用程序,即相同的实现兼容不同的平台,即 Windows、Linux 和 MacOS。 Robot 框架的语法很容易理解,因为它使用了人类可读的关键字。 Robot 框架的功能可以通过在 Selenium 中使用 Python 实现的库来扩展。它有一个丰富的生态系统,由作为独立项目开发的库和工具组成。
机器人官网 —https://robotframework.org/
GitHub 上的机器人 —https://github.com/robotframework/robotframework
以下是有关 Robot 框架的详细信息:
叉子 – 1.4K
拉取请求 - 51
已加星标 - 4.4K
贡献者 - 105
发布 – 87
提交 – 12,224
有什么前提条件?
如果您安装了 Python 2.7.14 或更高版本,则可以使用 Robot Framework。 Python Package Manager (pip) 命令用于安装 Python 测试框架。
Robot 框架的优点
以下是使用 Robot 框架进行 Selenium 测试自动化的优势:
-
使用Robot框架编写测试用例不需要编程知识。
-
由于 Python 测试框架独立于平台和应用程序,因此在从一个平台执行代码到另一个平台时不需要进行移植工作。
-
可用于 BDD、ATDD 和关键字驱动的 Selenium 测试自动化。
-
Robot 框架很容易上手,因为可以轻松使用测试数据语法。
-
Robot 框架具有丰富的库生态系统,例如用于移动自动化的 Appium,用于 DB 测试的数据库库等,用于测试不同的应用程序。
-
它具有良好的内置报告机制,因为每次构建后都会生成一个 HTML 日志。
机器人的缺点
以下是使用 Robot 框架的一些主要缺点:
-
没有对并行测试执行的内置支持。
-
创建自定义的 HTML 报告并非易事。
观看此视频以了解内置工具和标准库。
https://youtu.be/MZ-yQrUikUQ
Robot 是最适合你的 Python 测试框架吗?
由于其丰富的库集和简单的语法,与 PyUnit(或 unittest)和 PyTest 相比,Robot 框架更易于使用。如果我们正在为 ATDD 寻找理想的 Python 自动化框架,您应该选择 Robot 框架。
4. PyUnit(或单元测试)
! swz 100186 swz 100187 swz 100185
PyUnit(也称为 unittest)是默认的 Python 测试框架,它是 Python 标准库的一部分。 Python 测试框架受到 JUnit 框架的启发。它是自 Python 2.1 版发布以来发布的 unittest 模块的一部分。
由于 unittest Python 测试框架是开箱即用的,许多开始使用 Selenium 测试自动化的开发人员更喜欢 unittest 框架。测试用例遵循特定的命名法,其中测试以 test_ 开头或以 _test 结尾。
TestCase 是包含断言方法、SetUp 和 TearDown 例程的基类。可以将多个测试用例组合在一起以形成一个 TestSuite 类并构建自定义的测试运行器。
试试这个Selenium onlineGrid 来运行你的浏览器自动化测试脚本:https。
有什么前提条件?
由于 PyUnit 框架随 Python 测试框架开箱即用,因此不需要任何额外的包安装。
PyUnit(或 unittest)的优点
以下是 PyUnit 框架的一些优点:
-
由于 PyUnit 是 xUnit 框架的衍生产品,并且与 xUnit 框架有明显的相似之处,因此 Python 的新手开发人员也发现使用 unittest 框架很容易上手。
-
无需额外安装包。
-
测试场景可以独立执行,也可以组合成一个TestSuite。执行过程很简单,因为测试只能通过在终端上提及它们的名称来执行。
-
默认执行输出简洁易懂。这个 Python 测试框架还有许多命令行选项,有助于提供更详细的输出。
-
测试报告生成速度非常快,仅需几毫秒。
PyUnit(或 unittest)的缺点
以下是 PyUnit 框架的一些主要缺点:
-
测试用例的命名仍然基于 Java 中使用的 camelCase 命名约定。
-
大量样板代码用于测试实现。
-
没有颜色输出的规定。
PyUnit 是最适合您的 Python 自动化框架吗?
由于 PyUnit(或 unittest)是 Python 附带的默认 Selenium Python 测试框架,因此大多数开发人员使用 PyUnit 开始使用 Python 进行自动化测试。太多样板代码和对太多抽象的支持是在大型项目中使用 Python 测试框架的主要障碍。
5.生菜

Lettuce 是一个有助于 BDD 测试的 Python 测试框架。它从 Cucumber(专为 Ruby 设计)中汲取灵感。生菜的发布名称灵感来自绿色的东西。 Lettuce 的最新版本是 0.2.23,被称为 Kryptonite。
这个特定的 Python 测试框架是开源的,托管在 GitHub 上。正如他们官方网站上提到的,生菜的开发是为了让测试变得简单有趣。
生菜官网 —http://lettuce.it/
GitHub 上的生菜 —https://github.com/gabrielfalcao/lettuce
以下是有关 Lettuce 框架的详细信息:
叉子 – 335
拉取请求 - 18
已加星标 - 1.2K
贡献者 – 81
发布 – 63
提交 – 967
有什么前提条件?
可以使用 Python 包管理器 (pip) 安装生菜。先决条件是 Python 2.7.14(或更高版本)。
生菜的优点
以下是 Lettuce 框架的一些优点:
-
与其他促进 BDD 的 Python 测试框架(例如 Behave)一样,Lettuce 也使用 Gherkin 语言来创建场景和特征文件。如果您之前有使用任何 BDD 测试工具的经验,那么开始使用 Lettuce 很容易。
-
除了开发人员和其他技术人员外,其他项目利益相关者,即营销人员、项目经理等也可以在测试过程中发挥主要作用。
-
添加新的测试用例很容易,因为需要在特性文件和场景文件中进行主要更新。
生菜的缺点
以下是 Lettuce 框架的一些主要缺点:
-
主要用于黑盒测试。
-
使用像 Lettuce 这样的 BDD 测试工具的完美执行需要项目的所有各自利益相关者之间及时沟通。
Lettuce 是最适合你的 Python 自动化框架吗?
Lettuce 使 Selenium 测试自动化的整个过程具有可扩展性、可读性和简单性。使用像 Lettuce 这样的 BDD 工具的最佳部分是非技术人员也可以参与测试创建过程,因为测试源自业务需求。 Python 开发人员和测试人员更倾向于使用 pytest-bdd,因为它具有其他 BDD 工具支持的大部分功能。
6.鼻子2

Nose2 是 Python 单元测试框架,是 Nose 框架的继承者。因此它基于单元测试;它也被称为单元测试的扩展。 Nose2 通过提供用于测试执行的插件、启用测试用例的自动发现和收集文档来增加对 PyUnit 框架的支持。
所有这些添加的功能使使用 PyUnit 进行测试变得简单易行。 Nose2 的插件生态系统增加了对装饰器、固定装置、参数化测试、模块、类和测试发现的支持。 Nose2 中的此类是一种 DSL(域特定语言),用于编写具有昂贵的嵌套功能的测试,也称为功能测试。更多关于Nose2中Such的详细信息,请访问Such的官方网站。
Nose2 官网 —https://docs.nose2.io/en/latest/
Nose2 在 GitHub 上 —https://github.com/nose-devs/nose2
以下是有关 Nose2,python 单元测试框架的详细信息:
叉子 – 127
使用者 – 2.2K
已加星标 – 612
贡献者 - 58
发布 – 28
提交 – 934
有什么前提条件?
Nose2 仅依赖于与 Python 库一起提供的 unittest 模块。 Nose2 可以使用 Python 包管理器 (pip) 安装。
Nose2的优点
以下是 Nose2 python 测试框架的一些优点:
-
Nose2 扩展了现有的 unittest 框架,易于安装和上手。
-
凭借测试发现、夹具、参数化测试等功能,nose2 使 unittest 与 PyTest 一样有用。
-
用 Nose2 编写的脚本支持许多命令行选项和通过配置文件进行的广泛配置。
-
使用Nose2中的mp插件,可以多进程并行执行测试。如果您的测试受到大量 IO 或 CPU 限制,这将加快测试执行速度。
-
Nose2 有大量插件可以帮助加速 Selenium 测试自动化过程。
Nose2 的缺点
以下是 Nose2 python 测试框架的一些小缺点:
-
Nose2的文档没有PyTest框架那么丰富。
-
弃用 Python 2.4(及更高版本)支持的 nose 框架可能会阻碍想要在项目中使用 Nose2 的开发人员。
Nose2 是最适合你的 Python 测试框架吗?
如果您的团队成员正在使用 unittest 框架并且不打算切换到任何其他框架(例如 Lettuce、Behave、PyTest 等),那么值得尝试一下 Nose2,因为它是 unittest 的扩展。
由于 Nose2 还支持并行化测试,它可以用于自动化浏览器测试类场景,其中测试场景在不同的浏览器和平台组合上执行。
7.作证

Testify 是 2020 年另一个流行的 Python 测试框架,被认为是 unittest 和 nose 框架的替代品。由于该框架是在 unittest 之后建模的,因此为 unittest 编写的测试将需要进行最少的调整才能与 Testify 一起使用。
Testify 可用于执行自动化单元、集成和系统测试。 Testify 的最新版本是 0.11.0。它有一个可扩展的插件系统,提供有关报告的有用功能。与 Nose2 框架一样,Testify 还提供增强的测试发现和类级别的 SetUp 和 TearDown 夹具方法,这些方法对整个测试方法集执行一次。
Testify官网 —https://pypi.org/project/testify/
在 GitHub 上作证 —https://github.com/Yelp/Testify
以下是有关 Testify 框架的详细信息:
叉子 – 69
观看 - 19
已加星标 – 288
贡献者 - 33
发布 – 62
提交 – 974
有什么前提条件?
Testify 框架的主要优点是它涉及一个温和的学习曲线,因为它基于现有的 unittest 框架。安装相当简单,因为它只需要 Python 包管理器。
作证的优点
以下是 Testify 框架的一些优点:
-
Testify 基于 unittest 框架,很容易上手。
-
该框架具有可扩展的插件生态系统。
-
它具有额外的测试实用程序,有助于集成、分析和代码覆盖。
-
与 Nose2 框架一样,Testify 也带有增强的测试发现功能,这使得查找测试变得非常容易。
-
它有一个基于装饰器的夹具方法。
作证的缺点
以下是 Testify 框架的一些小缺点:
-
Testify 也有与 Nose2 相同的问题,文档不是那么广泛,如果您刚刚开始使用 Testify 框架,这可能是一个障碍。
-
正如一些在线讨论论坛指出的那样,使用 Testify 进行并行测试可能是一个障碍。
Testify 是最适合你的 Python 测试框架吗?
与 Nose2 一样,如果您的团队正在寻找基于 unittest 构建的 Python 测试框架,那么值得尝试 Testify。由于使用 Testify 实现并行测试有点困难,它可能不适合自动化浏览器测试等场景。
包起来

在本文中,我们了解了一些可以与 Selenium 一起使用的流行 Python 测试框架。这些框架中的每一个都有自己的优点和缺点。如果您打算在测试创建过程中包括非技术成员,您应该尝试 BDD 工具,例如 Behave 或 Lettuce。总而言之,选择正确的 Python 测试框架完全取决于项目要求和团队内可用的能力。
您使用哪个特定的 Python 测试框架?请在评论部分分享您的经验。此外,请随时通过在推特上转发我们与您的朋友分享这篇文章。 快乐测试☺
更多推荐

所有评论(0)