2022年Selenium自动化的顶级Python测试框架

发表于:2022-10-31 09:37

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:佚名    来源:知乎

  根据StackoverFlow网站的开发者调查,Python是2019年增长最快的编程语言。在整体排名中,它甚至超越了Java,排在第二位,成为最受喜爱的编程语言之一。
  Python流行的几个原因之一是对测试自动化框架的广泛支持。大多数流行的Python框架都与Selenium测试自动化框架兼容,并用于自动化浏览器测试和跨浏览器测试。
  随着2022年Python测试框架的增加,有必要选择适合你需求的理想的Selenium测试自动化框架。除了2022年默认的Python测试框架unittest(或PyUnit)之外,还有更多的Python框架可供选择。
  以下是小编总结的2022年实现Selenium测试自动化需求的顶级Python测试框架:
  1.Behave
  Behave是广泛用于BDD(业务驱动开发)测试的Selenium Python测试框架之一。Behave使用Gherkin语言开发场景和特性文件。由于Gherkin在测试用例开发中使用了简单的可读语言,所以还可以为团队中的非技术人员创建测试,从而支持业务驱动的开发。
  随着工程师、经理、质量分析师、业务开发经理等之间协作的增加,BDD框架的使用可以保证团队成员之间能够更好地沟通。如果你有关于其他BDD框架(如SpecFlow、Cucumber、- jvm等)的工作知识,那么开始使用行为驱动的Python测试框架(如Behave)就相对容易一些。
  因为behavior是一个BDD框架,它从根本上不同于其他Selenium Python测试框架,(如unittest(或PyUnit)、PyTest等。
  先决条件是什么?
  安装Behave需要Python 2.7.14以上版本。使用任何BDD工具的经验对于开始使用Behave框架都是非常方便的。
  Behave的优点
  (1)如果团队之前有使用任何现有BDD框架(如SpecFlow、Cucumber等)的经验,则很容易升级。
  (2)可用的环境功能,配置设置,夹具等,可实现简单的设置和清理。
  (3)它支持与其他web框架(如Django和Flask)的集成。
  (4)它有优秀的支持文档和教程,可以帮助你开始使用behave框架。
  (5)添加新的测试用例更简单,因为测试由不同的场景步骤、场景结果、特性文件等组成。
  (6)除了技术人员之外,非技术人员也可以在测试用例(或测试场景)开发中扮演重要角色。
  Behave的缺点
  (1)PyCharm(社区版)不支持Behave。
  (2)在Behave中的不同功能文件(*.feature)之间共享场景步骤(*_steps.py)是非常困难的。
  (3)没有对并行测试执行的内置支持,而并行测试是自动化浏览器测试的主要需求之一。并行测试执行的工作区需要安装额外的软件,就像热门网站讨论线程中所述。
  (4)Behave只能用于黑盒测试
  Behave是最好的Python测试框架吗?
  Behave框架适合于web测试,因为测试场景可以使用简单的英语开发。另一方面,Behave对于集成测试并不理想,因为冗长会导致测试场景不必要的复杂性。
  许多开发人员更喜欢pytest- BDD,它是pytest.runner的BDD库,因为它使用了pytest中可用的优秀特性,因此适合于BDD测试。
  2.PyUnit(或unittest)
  PyUnit(也称为unittest)是默认的Python测试框架,它是Python标准库的一部分。Python测试框架的灵感来自于JUnit框架。它是自Python版本2.1发布以来发布的unittest模块的一部分。
  由于unittest Python测试框架是开箱即用的,许多开始使用Selenium测试自动化的开发人员更喜欢unittest框架。测试用例遵循特定的命名法,其中测试要么以test_开始,要么以_test结束。
  TestCase是一个基类,它包含断言方法、设置和销毁例程。可以将测试用例的数量分组在一起,以形成一个TestSuite类并构建定制的测试运行程序。
  先决条件是什么?
  由于PyUnit框架与Python测试框架是开箱即用的,所以它不需要任何额外的软件包安装。
  PyUnit(或unittest)的优点
  (1)因为PyUnit是xUnit框架的派生,并且与xUnit框架有明显的相似之处,所以Python中的新手开发人员也很容易开始使用unittest框架。
  (2)不需要额外的软件包安装。
  (3)测试场景可以独立执行,也可以将它们分组到一个测试套件中。执行过程很简单,因为测试只能通过在终端上提到它们的名称来执行。
  (4)默认的执行输出是简洁且易于理解的。这个Python测试框架还有许多命令行选项,可以帮助提供更详细的输出。
  (5)测试报告的生成非常快,只需要几毫秒。
  PyUnit(或unittest)的缺点
  (1)测试用例的命名仍然基于在Java中使用的camelCase命名约定。
  (2)大量的样板代码用于测试实现。
  (3)没有提供彩色输出。
  PyUnit是最适合你的Python自动化框架吗?
  由于PyUnit(或unittest)是Python附带的默认Selenium Python测试框架,大多数开发人员使用PyUnit开始他们的Python自动化测试之旅。太多的样板代码和对太多抽象的支持是在大型项目中使用Python测试框架的主要障碍。
  了解如何使用PyUnit进行Selenium Python测试。
  3.Robot
  Robot是另一个广泛使用的Python测试框架,用于Selenium测试自动化、RPA(机器人流程自动化)和ATDD(验收测试驱动开发)。它是一个开源的、可扩展的Python测试框架。它可以很容易地与任何其他工具集成,因为它是创建灵活的自动化测试解决方案的理想工具。
  Python测试框架是独立于操作系统和应用程序的,即相同的实现在不同的平台(即WindowsLinux和MacOS)上是兼容的。Robot框架的语法很容易理解,因为它使用了人类可读的关键字。Robot框架的功能可以通过使用Python在Selenium中实现的库进行扩展。它有一个丰富的生态系统,由作为独立项目开发的库和工具组成。
  先决条件是什么?
  如果安装了Python 2.7.14或更高版本,可以使用Robot框架。Python包管理器(pip)命令用于安装Python测试框架。
  Robot框架的优点
  (1)使用Robot框架编写测试用例不需要编程知识。
  (2)由于Python测试框架是独立于平台和应用程序的,因此在从一个平台执行代码到另一个平台时不需要进行移植。
  (3)它可以用于BDD、ATDD和关键字驱动的Selenium测试自动化。
  (4)很容易开始使用Robot框架,因为可以轻松地使用测试数据语法。
  (5)Robot framework拥有丰富的库生态系统,例如用于移动自动化的Appium、用于DB测试的数据库库等,用于测试不同的应用程序。
  (6)它有一个很好的内置报告机制,因为每次构建之后都会生成一个HTML日志。
  Robot的缺点
  (1)没有对并行测试执行的内置支持。
  (2)创建定制的HTML报告不是一项简单的任务。
  Robot是最适合你的Python测试框架吗?
  由于其丰富的库集和简单的语法,与PyUnit(或unittest)和PyTest相比,Robot框架更易于使用。如果我们正在为ATDD寻找一个理想的Python自动化框架,那么你应该选择Robot framework。
  4.Nose2
  Nose2是一个Python单元测试框架,它是Nose框架的后续版本。它是unittest的,也被称为unittest的扩展。Nose2通过为测试执行提供插件、支持测试用例的自动发现和收集文档,为PyUnit框架增加了支持。
  所有这些新增的功能使得使用PyUnit进行测试变得简单和容易。Nose2的插件生态系统增加了对装饰器、装置、参数化测试、模块、类和测试发现的支持。在Nose2中是一种DSL(领域特定语言),用于编写具有昂贵的嵌套特性的测试,也称为功能测试。更多关于Nose2的详细信息请访问该网站的官方网站。
  先决条件是什么?
  Nose2只依赖于与Python库一起提供的unittest模块。可以使用Python包管理器(pip)安装Nose2。
  Nose2的优点
  (1)它很容易安装并开始使用Nose2,因为它扩展了现有的unittest框架。
  (2)有了诸如测试发现、fixture、参数化测试等特性,nose2使unittest与PyTest一样有用。
  (3)用Nose2编写的脚本支持许多命令行选项和通过配置文件进行的大量配置。
  (4)使用Nose2中的mp插件,测试可以与多个进程并行执行。这加快了测试执行的速度,以防你的测试被IO或CPU严重限制。
  (5)Nose2有大量的插件,可以帮助加速Selenium测试自动化过程。
  Nose2的缺点
  (1)Nose2的文档不像PyTest框架那样广泛。
  (2)Python 2.4(及以上版本)支持的nose框架的废弃可能会对希望在项目中使用Nose2的开发人员造成潜在的负面影响。
  Nose2是最适合你的Python测试框架吗?
  如果你的团队成员正在使用unittest框架,并且不打算切换到任何其他框架(例如Lettuce、行为、PyTest等),那么值得尝试一下Nose2,因为它是unittest的扩展。
  因为Nose2也支持并行测试,所以它可以用于自动化的浏览器测试,这种测试场景可以在不同的浏览器和平台组合中执行。
  5.Lettuce
  Lettuce是一个Python测试框架,它促进了BDD测试。它的灵感来自Cucumber(是为Ruby设计的)。Lettuce的名字是受到了绿色植物的启发。最新版本的Lettuce是0.2.23,被称为Kryptonite。
  这个特殊的Python测试框架是开源的,并托管在GitHub上。正如他们的官方网站所提到的,Lettuce是为了让测试变得简单和有趣而开发的。
  先决条件是什么?
  可以使用Python包管理器(pip)安装Lettuce。前提条件是Python 2.7.14(或更高版本)。
  Lettuce的优点
  (1)像其他Python测试框架(如有助于BDD的Behave)一样,Lettuce也使用小黄瓜语言来创建场景和特性文件。如果你之前有使用任何BDD测试工具的经验,那么开始使用Lettuce是很容易的。
  (2)除了开发人员和其他技术人员之外,其他项目干系人,即营销人员、项目经理等,也可以在测试过程中发挥主要作用。
  (3)因为特性文件和场景文件中需要主要的更新,添加新的测试用例会很容易。
  Lettuce的缺点
  (1)它主要用于黑盒测试。
  (2)使用像Lettuce这样的BDD测试工具,完美的执行需要在项目的所有相关涉众之间进行及时的沟通。
  Lettuce是最适合你的Python自动化框架吗?
  Lettuce使Selenium测试自动化的整个过程具有可伸缩性、可读性和简单性。使用像Lettuce这样的BDD工具的最佳部分是,非技术人员也可以参与测试创建过程,因为测试是从业务需求派生出来的。Python开发人员和测试人员更倾向于pytest-bdd,因为它具有其他BDD工具支持的大部分特性。
  6.PyTest
  使用PyTest编写的测试套件更加紧凑,因为不需要大量样板代码,也不需要将测试包含到大型测试类中。与默认的Python测试框架2022不同,它要求测试以test_开始(或以_test结束),PyTest中没有固定的测试用例命名法。这是因为PyTest具有支持自动发现测试模块和函数的内置特性。
  不需要记住assert*名称,这是由于引入了assert重写的有用特性,该特性有助于提供关于失败断言语句的详细信息。
  先决条件是什么?
  PyTest (Python测试框架)最好的地方在于它包含了一个简单的学习曲线。开始使用PyTest是很容易的,特别是如果你事先了解任何现有的Python测试框架。
  你只需要一个用于开发的Python IDE和用于安装PyTest的Python包管理器。
  PyTest的优点
  PyTest框架有很多优点,主要有以下几点:
  (1)它与其他Python测试框架(如unittest(或PyUnit))兼容。
  (2)除了简单的测试之外,PyTest还可以用于创建复杂的功能测试用例。
  (3)使用其他Python测试框架将现有实现移植到PyTest所需的工作较少。
  (4)PyTest可以用于实践TDD(测试驱动开发)的项目,也可以用于开源项目。
  (5)PyTest有助于创建有效的测试用例(和测试套件),因为它支持参数化。使用参数化,可以使用不同的输入配置执行测试用例,从而减少代码重复。
  (6)使用PyTest的测试很容易理解,因为只有很少的样板代码。
  (7)它支持fixture和类,由于这些测试对象在模块/类/函数/会话的生命周期中都是可用的。
  (8)PyTest是可扩展的,Python测试框架已经有了丰富的插件架构。目前PyTest有315+的外部插件。
  它通过pytest-xdist插件支持并行测试执行。
  PyTest中的断言提供了关于失败场景的详细信息。
  PyTest作为Python测试框架的缺点
  (1)PyTest与其他Selenium Python测试框架不兼容,因为它使用自己的特殊例程进行开发。
  (2)重写完整的代码是使用PyTest将现有的实现移植到其他Python测试框架的唯一方法。
  PyTest是最适合你的Python测试框架吗?
  如果你正在开发复杂的功能测试,那么你可以选择PyTest而不是默认的Selenium Python框架,即unittest。fixture、类以及参数化对于自动化测试开发非常方便。
  7.Testify
  prove是另一个在2022年流行的Python测试框架,它被认为是unittest和nose框架的替代品。由于框架是在unittest之后建模的,为unittest编写的测试将需要最小的调整来使用prove。
  证实可用于执行自动化单元、集成和系统测试。最新版本的是0.11.0。它有一个可扩展的插件系统,提供了有用的报告功能。与Nose2框架一样,prove也提供了增强的测试发现和类级设置&拆卸fixture方法,这些方法只对整个测试方法集执行一次。
  先决条件是什么?
  证明框架的主要优点是,它涉及一个温和的学习曲线,因为它是基于现有的单元测试框架。安装相当简单,因为它只需要Python包管理器。
  Testify的优点
  (1)因为它是基于unittest框架的,所以很容易开始使用prove。
  (2)这个框架有一个可扩展的插件生态系统。
  (3)它还有额外的测试实用程序,可以帮助集成、分析和代码覆盖。
  (4)与Nose2框架一样,prove也带有增强的测试发现,这使得发现测试非常容易。
  (5)它为fixture方法提供了一种基于装饰的方法。
  Testify的缺点
  (1)和Nose2一样,也有同样的问题,文档不是很丰富,如果你刚刚开始使用框架,这可能是一个障碍。
  (2)与Testify的并行测试可能是一个障碍,正如一些在线论坛指出的那样。
  Testify是最好的Python测试框架吗?
  与Nose2一样,如果你的团队正在寻找构建在unittest之上的Python测试框架,那么它值得一试。由于使用witness实现并行测试有点困难,所以它可能不适合自动化浏览器测试之类的场景。
  总结
  在本文中,我们了解了一些可以与Selenium一起使用的流行Python测试框架。这些框架都有各自的优缺点。如果你打算在测试创建过程中包含非技术人员,你可以尝试有效BDD工具,例如Behave或Lettuce 。总之,选择正确的Python测试框架完全取决于项目需求和团队中可用的能力。
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号