如今,在不牺牲产品质量的情况下,频繁地部署大型软件的新版本,已经成为了主流趋势。通常,在每次引入新的功能、触发新的部署时,各种针对缺陷的修复都需要进行深入的、端到端的测试,以确保部署的成功率。虽然对于小型产品或项目而言,我们可以通过手动测试来保证覆盖率;但是对于那些功能数量庞大的产品或应用来说,我们肯定需要通过自动化测试,在最短的时间内提供最大的测试覆盖率。此时,我们往往需要通过将Selenium与某种编程语言结合使用,来实现该目的。在本文中,我将和您探讨如何使用Selenium与Python,来构建自动化的Web测试框架。
专注于为中小企业提供做网站、网站设计服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业古塔免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上1000家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
通常,Selenium Web自动化测试框架可结合使用诸如:Java、Python、JavaScript、Ruby、C#等不同的编程语言。其中,根据GitHub的一项调查(https://pypl.github.io/PYPL.html)显示,Python是开发人员最常用的编程语言。它具有流畅的学习曲线、简单的语法、以及简洁的代码。因此,Selenium可以轻松地与Python相集成,以自动化Web测试的过程。
而作为一种Web框架,Selenium WebDriver能够在各种受支持的浏览器(如:Chrome、Firefox、Safari等)上,自动化各种基于Web的应用程序。因此,Selenium自动化测试框架能够让用户自定义与Web应用的逐步交互,并通过添加断言,来发现各种错误。
Selenium WebDriver并非一个独立的测试工具,它通过各种组件来满足Web自动化测试的需要。简单而言,Selenium WebDriver的后端组件包括:
随着需求的增加,目前市场上出现了各种受欢迎程度不同的Python自动化测试框架。这些框架在管理脚本的执行顺序、存储结果、呈现日志、以及添加断言等方面,都发挥着各自的作用。下面,我们将重点讨论四个比较流行的自动化测试框架:
作为一个开源的自动化测试框架,Robot Framework主要被用于机器人过程自动化(robotic process automation,RPA)和验收测试驱动开发(acceptance test-driven development,ATDD)等方面。它支持Python 2.7.14及其更高版本。
作为最常用的Python自动化测试框架之一,Pytest主要被用于单元、功能、以及API等方面的测试。它支持Python 3.5及其更高版本。
作为由Python附带的默认测试框架,PyUnit受到了许多开发人员的青睐。同时,作为一个单元测试的框架,它主要借鉴了流行的Java测试框架--JUnit。
作为最流行的Python行为驱动开发(behavior-driven development,BDD)自动化测试框架之一,Behave在功能上与Cucumber框架非常相似。
有了前面Selenium WebDriver架构和四大Python测试框架的基础,下面让我们开始在Windows上安装,并运行基于Selenium的自动化测试。
第 1 步: 下载并安装适用于Windows的Python。当然,如果您的计算机上已安装了Python,则完全可以跳过此步。
第 2 步: 为了在Python中安装和管理代码包,您必须使用Python在本地主机上提前安装PIP(可以从Python官网处,下载包管理系统)。在完成下载后,您可以使用如下命令进行安装:
- python get-pip.py
并使用如下命令,来确认PIP是否已被正确安装:
- pip –version
第 3 步: 为了构建自动化测试套件,我们需要通过执行如下命令,来安装Pytest库Pytest:
- pip install -U pytest
并使用如下命令,来确认Pytest是否已被正确安装:
- pytest –version
第 4 步: 使用PIP的如下命令,来安装Selenium框架:
- pip install -U selenium
并使用如下命令,来确认被安装的selenium的版本:
- python -c “import selenium; print(selenium.__version__)”
第 5 步: 为了保持浏览器的独立性,我们无需专门下载针对某种浏览器的驱动程序。相反,我们会使用如下命令来安装开源库:WebDriver-Manager,以自动管理不同的浏览器驱动:
- pip install webdriver-manager
并使用如下命令,来确认Selenium和Webdriver-manager是否已被正确安装:
- pip list
至此,我们已经满足了使用Python去运行基于Selenium的自动化测试的先决条件。下面,让我们通过编写脚本,快速地创建如下简单的测试场景:
1. 直接访问pCloudy主页
2. 点击登录
3. 获取页面标题
4. 断言登录页面的标题
在此,我们使用pytest框架的selenium-python脚本:
- import pytest
- from selenium
- import webdriver
- from webdriver_manager.chrome
- import ChromeDriverManager
- import sys
- from selenium.webdriver.chrome.options
- import Options
- from selenium.webdriver.common.keys
- import Keys
- from time
- import sleep
- def pcloudy_sample_test(): driver = webdriver.Chrome(ChromeDriverManager().install())
- driver.get('https://www.pcloudy.com/') driver.maximize_window()
- driver.find_element(By.XPATH, '//*[text()="Login"]').click() sleep(2)
- title = "" Remote Mobile Web & Application Testing on Real Android Devices - pCloudy ""
- assert title == driver.title
- driver.close()
正如上述代码所示,我们最初导入了那些自动化测试所需的代码库。为了创建函数,我们首先使用WebDriverManager来调用Chrome浏览器。WebDriverManager会去检查最新版本的WebDriver的二进制文件,如果不在目标系统上,则需额外下载。接着,我们会导出Selenium所需的WebDriver环境变量。在启动浏览器后,我们将pCloudy主页的URL传递给浏览器,并将浏览器最大化,以获得更好的分辨率。
在使用XPATH定位器加载了pCloudy主页之后,我们会通过登录按钮,定向到登录页面上。最后,我们使用主页的预期检索标题,去断言实际的标题。如果断言通过,那么测试用例会被标记为已通过,否则会被标记为失败。最终,在执行完毕时,程序会关闭正在运行的会话。
作为一种可持续测试的云服务,pCloudy提供了跨浏览器测试(无论是Windows平台还是Mac平台)的功能。其中,Browser Cloud平台允许用户访问那些被托管在云端的远程主机,并且能够在Selenium自动化框架中,使用RemoteWebDriver。因此,我们可以在云端,模拟不同的环境(例如:不同的浏览器、某个浏览器的多个版本、以及不同操作系统),并开展各种自动化测试。
同时,Browser Cloud自动化测试平台,可以在各种云托管的主机上,对Web应用程序开展手动测试。如果您的自动化测试在某个特定环境中出现了失败,那么您只需从UI中选择相同的环境,就可以在pCloudy的相同环境中,手动运行该测试。
下面是基于Pytest框架的Selenium脚本。它将在pCloudy的Browser Cloud上执行跨浏览器的测试:
- import pytest
- from os
- import environ
- from selenium
- import webdriver
- from selenium.common.exceptions
- import WebDriverException
- from selenium.webdriver.remote.remote_connection
- import RemoteConnection
- @pytest.fixture(scope = 'function')
- def driver():
- desired_caps = {}
- browser = { "pCloudy_Username": "ramit.dhamija@gmail.com", "apiKey": "5TfF4UcNRbN3JhucQ", "clientName": "ramit.dhamija@gmail.com", "email": "ramit.dhamija@gmail.com", "os": "Mac", "osVersion": "Catalina", "browserName": "safari", "browserVersions": "14", "pCloudy_EnableVideo": "true", "pCloudy_EnablePerformanceData": "true", "pCloudy_EnableDeviceLogs": "true"
- }
- desired_caps.update(browser)
- selenium_endpoint = "https://prod-browsercloud-in.pcloudy.com/seleniumcloud/wd/hub"
- executor = RemoteConnection(selenium_endpoint, resolve_ip = False) browser = webdriver.Remote( command_executor = executor, desired_capabilities = desired_caps )
- yield browser
sample_login_test.py的代码内容为:
- import pytest
- import sys
- @pytest.mark.usefixtures('driver')
- class TestLink: def test_title(self, driver): ""
- " Verify click and title of login page: return :None "" "
- driver.get('https://www.pcloudy.com/') driver.maximize_window()
- driver.find_element(By.XPATH, '//*[text()="Login"]').click() sleep(2)
- title = ""
- Remote Mobile Web & Application Testing on Real Android Devices - pCloudy ""
- assert title == driver.title driver.quit()
您可以执行如下pytest测试脚本的命令:
- pytest -n=2 tests\sample_login_test.py
其中,-n用于指定并行测试执行的次数。
正如上述代码所示,在我们的第一个脚本中,我们用到了pytest的fixtures。它们会在每个对应的测试函数之前,事先被运行。在fixtures中定义的范围——'function'是fixture的默认值,它表示fixture将在每个测试会话中执行一次。
为了能够在pCloudy浏览器的云中运行测试,我们定义了“用户名+API密钥”方式的pCloudy身份验证等函数。此外,在必需的功能中,我们定义了各种运行所需的环境,其中包括Mac操作系统的Catalina版本和Safari-14浏览器。
当然,在pCloudy中,被用来捕获测试视频记录、性能数据、以及日志的内置功能,其实并不多。为了能够在pCloudy Selenium网格上运行测试,我们将Selenium网格的URL定义为selenium_endpoint。被连接的节点主机将会根据所用到的测试环境,进行自动分配。此外,在第一个脚本的末尾,我们会生成一个浏览器,用于存储和更新自动化测试所需的各项功能。
而在下一个脚本中,我们用到了与之前在pCloudy登录页面处断言标题是否相同的Selenium脚本。该自动化测试会在pCloudy Browser Cloud中模拟Mac-Catalina、Safari-14等环境运行。
当前题目:用Selnium和Python构建自动化Web测试框架
文章路径:http://www.mswzjz.cn/qtweb/news46/264346.html
攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能