谈到Selenium测试自动化,Python自动化测试是我们的首选。在本文中,我们将解释为什么说使用Python进行自动化测试是最好的选择。
当涉及到自动化测试用例时,选择对测试自动化有良好支持的编程语言是必须要做出的最困难的选择之一。Python、Java、C#、Ruby等等都是一些可以与Selenium测试自动化框架一起使用的重要语言。然而,特别是在Selenium WebDriver的使用中,Python测试自动化又是被QA所广泛应用的,。
当涉及到使用Selenium框架的编程语言时,开发人员和自动化工程师有多种选择。作为一名自动化工程师,我有机会使用不同的编程语言,从C开始,到后来在各种项目中使用Java、Python、C++。虽然我很喜欢在Selenium中使用Java和C#,但我仍然觉得Python是Selenium测试自动化的最佳脚本语言。
在本文中,我将分享运用Python+Selenium WebDriver进行自动化测试是我的首选组合的12大原因。
让我们开始看看吧!
简洁易读
大多数人都会同意,就易于编码和易于阅读这两个方面而言,Python是最好的编程语言之一。与其他可以用于Selenium测试自动化的编程语言相比,Python包含更少的冗余信息,而且相对容易使用。
由于Python是一种脚本语言,自动化工程师不必担心运行编译器来将代码转换为可执行文件。 Python (Python之禅) 是使用Python进行自动化测试的理想指南,它提倡“如果你的实现方案易于理解,那它很有可能是个好的方案”!这其实意味着作为测试用例(或测试套件)部分测试方案应该是可读的、可描述,并且易于理解的。
实现Python测试自动化API用于通过Selenium自动化框架连接到web浏览器。使用Selenium WebDriver可以以一种预期的方式轻松地编写自动化测试。以下是Python设计指导原则的截图(在Python命令行中运行import this来获取PEP 20 - Python的Zen):
Python测试自动化框架的详尽列表
PyUnit(或Unittest)是Python中默认的测试框架。 除了PyUnit之外,Python语言还支持许多用于Selenium测试的框架。一些广泛用于Python测试自动化的测试框架是PyTest、Behave、Robot、Lettuce、Nose2和Testify。像PyTest、Nose2和Testify这样的框架可以用于执行自动化的单元测试、集成测试和系统测试。
Robot 框架是用于机器人流程自动化(RPA)、Selenium测试和ATDD(验收测试驱动开发)的首选Python测试自动化框架。Lettuce和Behave是最适合BDD(行为驱动开发)的Python测试框架。框架的安装工作量是非常小的(例如,可以使用pip install命令),并且它们与Selenium WebDriver的组合得到了广泛和高频地使用。
很少有编程语言在自动化测试框架中提供这种多样性,因此,Python被称为测试自动化的最佳脚本语言一点也不为过。
PyTest–最佳Python测试自动化框架
在前面,我们列出了使用Python进行自动化测试的广泛使用的Python框架,但是PyTest在最佳自动化框架(可用于任何语言)的列表中名列前茅。和其他Python框架一样,PyTest也用于单元测试、集成测试和端到端测试。
虽然PyUnit (unittest)是Python中的默认测试框架,但开发人员和自动化测试人员普遍更喜欢PyTest,因为它比PyUnit功能更丰富。测试可以由简单的函数组成,也可以采用输入参数来支持参数化测试。
PyTest fixtures使得在不同的web浏览器和平台组合上执行测试变得很容易。参数化的PyTest fixture可以跨不同的输入值执行。
将使用PyTest和Selenium WebDriver的现有实现移植到参数化的PyTest fixtures只需要很小的工作量。 Fixtures在处理配置和清除操作等方面效果很好。 扩展PyTest框架的插件在代码覆盖率、并行测试等方面也很有帮助。
超级简单的“并行测试”
Selenium中的并行测试广泛用于以加速的方式跨浏览器和平台(即操作系统)的不同组合执行自动化测试。所有编程语言都支持使用Selenium测试框架进行并行测试(或并行执行),但在Python中的使用使之变得更加简单。
当使用PyTest框架时,pytest-xdist插件有助于并行运行测试。当测试不是线程安全且需要状态隔离时,它是首选选项。安装插件可以通过在终端上运行pip install < plugin-name >来完成。pytest-parallel是一个应该用于并行运行Selenium测试的插件,它是线程安全的,并且在Python环境中没有状态管理。
因此,pytest-xdist执行并行性,而pytest-parallel执行并发性和并行性。它提供生成最大并发用户数(或进程数)也可以针对每个进程下的最大线程(即每个工作线程的测试)的可能。
使用PyTest启用并行执行不需要对现有实现进行任何更改,因为在运行Python代码时,在终端上提供了并行测试的相关选项。
并行测试的相同原则也适用于其他Python测试框架,如Nose2、Behave、Lettuce等。另一方面,使用Selenium Java或Selenium C#或其他组合启用并行测试需要更改代码,而且涉及比Python更多的步骤。
易于安装的软件包
PIP是Python中的标准包管理系统。使用pip安装一个新包时不需要下载这个包。pip install命令在PyPI中查找所需的包,查找它的依赖项,并安装必要的包,以确保安装请求能够顺利地提供。
尽管C#和Java等语言提供了相对相似的特性(例如C#中的包管理控制台),但使用pip在Python中安装包则是完全不同的体验!
多范式程序设计语言
Python是一种多范式编程语言。因此,对面向对象编程和结构化编程有着成熟的支持。Python中的大多数特性都支持函数式编程和面向行为的编程。
面向行为的编程的需求是通过包含元程序来实现的,元程序使程序能够将其他程序视为自己的数据。用Python的测试函数的可读性和实现性更好,因为该框架不会强制将测试函数添加到类中。
与其他编程语言不同,Python让测试自动化工程师来决定是否应将类或函数用于Selenium测试自动化。
广泛的IDE
对于Python测试自动化,我首选的IDE是PyCharm(communityedition),因为无论支持Selenium测试自动化的框架是什么,它都可以轻松使用。我建议只有在Python中使用BDD框架时才升级到PyCharm(专业版)。
可以选择使用GVim、Notepad++和visualstudio代码进行快速编辑,特别是在Python测试自动化场景不太复杂的情况下。当涉及到编辑代码时,visualstudio代码是我的首选IDE,因为它提供了几个插件,在很大程度上简化了编辑任务!
动态类型
Python语言使用动态类型,并使用后期绑定(或动态名称解析),在执行过程中绑定方法和变量名。这个特性对于Python测试自动化来说非常方便。
Python还提供了Pyre (Python 3的一个代码性能代码性能分析器和Mypy等选项,它们都是流行的静态类型检查器。通过这些检查器,Python可以将动态类型和静态类型的强大功能结合起来。
功能强大且无障碍的报告
报告是Selenium测试自动化的主要元素之一,因为报告提供了自动化测试过程的更大可见性。以简明易懂的形式提供正确信息的强大报告可以发送给必要的相关方(团队中),以便他们了解测试方面的进展。
使用PyTest将报告与Selenium测试自动化集成可以通过使用PyTest -html包来实现。使用pytest-html生成的测试报告提供了易于比较的可视内容。在PyTest(最流行的Python框架)中,无需花费太多精力就可以生成Selenium测试的报告。
使用像LambdaTest这样的cloud Selenium Grid提供的API,您可以为Python测试自动化构建一个更强大的报告策略。
手残党的福音
我们前面提到了一系列可用于使用Python开发和执行自动化测试的IDE。Python中的大多数测试框架都配备了命令行运行程序,这些运行程序有助于从终端(或命令提示符)执行测试。
如果您非常精通Python,那么Python IDE(如Visual Studio Code)和命令行运行程序的组合可以为您完成这项工作!只要为IDE提供流行的Python测试框架所需的插件(例如,PyTest、Behave等),就可以使用Python进行自动化测试了!
适用于小型和大型项目
Python有一个全面的标准库。语言结构和面向对象的方法帮助程序员编写易于阅读的代码来完成预期的工作。
测试框架使用简单的命名法(例如,PyTest中的测试函数应该以test_开头)可以简化识别测试函数的工作。
使用Python开始自动化测试是很容易的,因为就编程语言而言,入门门槛很低。它适合小规模和复杂的项目,使Python成为测试自动化的最佳脚本语言。
易于与CI/CD工具集成
Jenkins是用于持续集成 (CI)和持续交付 (CD)的最流行、最广泛使用的开源工具之一。Travis CI、Circle CI、TeamCity、Bamboo、Azure Pipeline等都是可以替代Jenkins被使用的其他选项,但我更喜欢Jenkins,因为它是“开源”的。
Freestyle project和Jenkins pipeline是为项目安排工作的两种选择。与其他编译语言不同,Python本身不需要每次参与构建,但强大的Python生态系统使Python、Selenium和Jenkins组合成为了一套”杀手锏”。
Python生态系统包括可以轻松集成到Jenkins中进行报告和测试的工具,以及Pylint之类的代码度量报告创建者。因为使用PyTest的报告可以从命令行本身触发,所以在使用PyTest的Jenkins pipeline时,不需要添加 ‘Post-Build Actions’。
将Jenkins与PyTest结合使用是很方便的,因为从本地执行环境到Jenkins的转换只需要很少的步骤(例如,创建项目、添加执行的命令行选项等),这使得切换非常简单!Jenkins确实提供了一个创建Maven项目的直接选项,但是如果您想使用“Reporting”,就需要一个学习过程,而Python在Jenkins上是不需要的。
各位!
尽管Selenium测试自动化的最佳编程语言的选择非常主观,但Python是迄今为止测试自动化的最佳脚本语言。Python测试自动化很容易入门,其广泛的测试框架可用于单元测试、跨浏览器测试等。我们相信,一旦您开始使用Python进行自动化测试,您一定会爱上它的。
接下来,请让我们知道您最喜欢的Selenium测试编程语言,以及您对Python(自动化测试无可争议的王者)的评价吧!
测试愉快!
{测试窝原创译文,译者:Elaine66}