编程语言应用

注册

 

发新话题 回复该主题

用Selnium和Python构建自动化 [复制链接]

1#

如今,在不牺牲产品质量的情况下,频繁地部署大型软件的新版本,已经成为了主流趋势。通常,在每次引入新的功能、触发新的部署时,各种针对缺陷的修复都需要进行深入的、端到端的测试,以确保部署的成功率。

虽然对于小型产品或项目而言,我们可以通过手动测试来保证覆盖率;但是对于那些功能数量庞大的产品或应用来说,我们肯定需要通过自动化测试,在最短的时间内提供最大的测试覆盖率。

此时,我们往往需要通过将Selenium与某种编程语言结合使用,来实现该目的。在本文中,我将和您探讨如何使用Selenium与Python,来构建自动化的Web测试框架。

SeleniumWebDriver架构速览

通常,SeleniumWeb自动化测试框架可结合使用诸如:Java、Python、JavaScript、Ruby、C#等不同的编程语言。其中,根据GitHub的一项调查显示,Python是开发人员最常用的编程语言。它具有流畅的学习曲线、简单的语法、以及简洁的代码。因此,Selenium可以轻松地与Python相集成,以自动化Web测试的过程。

而作为一种Web框架,SeleniumWebDriver能够在各种受支持的浏览器(如:Chrome、Firefox、Safari等)上,自动化各种基于Web的应用程序。因此,Selenium自动化测试框架能够让用户自定义与Web应用的逐步交互,并通过添加断言,来发现各种错误。

SeleniumWebDriver并非一个独立的测试工具,它通过各种组件来满足Web自动化测试的需要。简单而言,SeleniumWebDriver的后端组件包括:

SeleniumWebDriver客户端库/语言绑定:如上所述,由于Selenium可以与任何语言集成,因此其下载页面提供了Selenium客户端与WebDriver语言的绑定。用户可以在任何首选语言中创建能与Selenium服务器交互的语言脚本。

JSONWire协议:作为Selenium的核心,JSONWire协议通过提供能与RESTAPI进行数据传输的媒介,以促进客户端代码和浏览器之间的通信。也就是说,它能够在浏览器的二进制文件和客户端库之间建立连接。

浏览器驱动程序:每个浏览器都会通过本浏览器的驱动程序,来实现数据传输。这些驱动可以从已编写的、基于Selenium的脚本处接收命令,在相应的浏览器上执行之,并以HTTP响应的形式返回结果。当然,这些都需要在JSONWire协议的帮助下方可实现。

浏览器:确保每个自动化测试都能够被安装在本地或远程机器上,并能够在其支持的浏览器中(如:Firefox、Chrome、MicrosoftEdge、Safari等)被执行。

四大Python自动化测试框架

随着需求的增加,目前市场上出现了各种受欢迎程度不同的Python自动化测试框架。这些框架在管理脚本的执行顺序、存储结果、呈现日志、以及添加断言等方面,都发挥着各自的作用。下面,我们将重点讨论四个比较流行的自动化测试框架:

(1)RobotFramework

作为一个开源的自动化测试框架,RobotFramework主要被用于机器人过程自动化(roboticprocessautomation,RPA)和验收测试驱动开发(acceptancetest-drivendevelopment,ATDD)等方面。它支持Python2.7.14及其更高版本。

优点:

它适用于所有类型的应用程序,包括:Web应用程序、移动应用程序、以及桌面应用程序等。

通过采用关键字驱动方法(KeywordDrivenApproach,KDA),它允许开发者在无需编程经验的情况下,以人类可读的关键字创建测试用例。

它支持源自RFv4.0的原生IF/ELSE语法。

它提供了专门的社区支持和多种资源。

缺点:

报告的定制过程较为复杂。

虽然该框架的并行测试范围比较有限,但是可以通过Pabot(一种机器人框架的并行执行器)来实现。

(2)Pytest

作为最常用的Python自动化测试框架之一,Pytest主要被用于单元、功能、以及API等方面的测试。它支持Python3.5及其更高版本。

优点:

通过提供fixtures,来覆盖所有的参数组合,而无需重新编写代码。

支持包括:pytest-randomly、pytest-cov、pytest-django、以及pytest-bdd在内的多种插件。

支持pytesthtml插件。开发人员只需一个命令,即可针对自动化测试套件生成html类型的报告。

支持使用pytest-xdist插件并行执行各种测试用例。

缺点:

由于pytest拥有一个单独编写测试用例的例程,因此它与其他测试框架的兼容性较差。

(3)PyUnit

作为由Python附带的默认测试框架,PyUnit受到了许多开发人员的青睐。同时,作为一个单元测试的框架,它主要借鉴了流行的Java测试框架--JUnit。

优点:

由于属于默认的Python包,因此PyUnit无需额外的安装与设置。

能够快速地生成XML和unittest-sml-reporting两种测试报告。

缺点:

有时会涉及到大量的样板代码(boilerplatecode)。

由于它是基于JUnit的,因此使用了camelCase命名方式,而非Pythonsnake_case的命名约定。

(4)Behave

作为最流行的Python行为驱动开发(behavior-drivendevelopment,BDD)自动化测试框架之一,Behave在功能上与Cucumber框架非常相似。

优点:

它既可以完全支持Gherkin语言,又能够以可读性的语言去编写测试用例,以便于非技术团队的参与。

它具有针对Django和Flask的集成。

缺点:

它仅适用于黑盒测试。

它不支持并行测试。

使用Selenium和Pytest框架来设置Python

有了前面SeleniumWebDriver架构和四大Python测试框架的基础,下面让我们开始在Windows上安装,并运行基于Selenium的自动化测试。

第1步:下载并安装适用于Windows的Python。当然,如果您的计算机上已安装了Python,则完全可以跳过此步。

第2步:为了在Python中安装和管理代码包,您必须使用Python在本地主机上提前安装PIP(可以从Python

分享 转发
TOP
发新话题 回复该主题