web自动化测试框架落地实施全过程-测试环境搭建 (Selenium+Python)

一、什么是web自动化测试?

Web自动化测试是指使用自动化工具模拟用户在Web浏览器中执行的操作,通过编写脚本来自动化执行测试用例,以验证Web应用程序的功能、性能和兼容性等方面的质量。其主要目的是降低测试成本和时间,并提高测试效率和准确性。

Web自动化测试通常包括以下步骤:

  1. 确定测试目标:明确需要测试的Web应用程序的功能、性能、兼容性等方面的需求。

  2. 选择自动化测试工具:从众多可用的自动化测试工具中选择适合自己的工具,如Selenium、Appium、TestComplete等。

  3. 编写测试脚本:根据测试目标编写测试脚本,实现自动登录、点击按钮、输入数据、验证结果等操作。

  4. 执行测试脚本:运行测试脚本并生成测试报告,检查测试结果是否符合预期结果。

  5. 分析测试结果:对测试结果进行分析,确定哪些问题需要修复,哪些测试需要迭代。

Web自动化测试相比手动测试,可以节省测试人员大量的时间和精力,提高测试覆盖率和质量。但同时也需要注意一些限制和注意事项,如测试环境的搭建、测试脚本的维护和更新、测试用例的设计和管理等方面。如果想领取笔记,面试题,简历模板等测试相关的资料可以加wx:mashang-nn(备注CSDN555)

在华为工作了10年的大佬出的Web自动化测试教程,华为现用技术教程!_哔哩哔哩_bilibili在华为工作了10年的大佬出的Web自动化测试教程,华为现用技术教程!共计16条视频,包括:1. 【web自动化】主流Web自动化测试技术对比、2. 【web自动化】Selenium自动化测试环境一键搭建、3. 【web自动化】Selenium八大定位策略详解等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV1sM4y1d7tq/?spm_id_from=333.337.search-card.all.click

二、web自动化测试流程实施过程:

Web自动化测试流程的实施过程一般包括以下步骤:

  1. 需求分析和测试计划制定:明确需要测试的Web应用程序的功能、性能、兼容性等方面的需求,并根据需求制定相应的测试计划。

  2. 环境搭建:搭建测试环境,包括安装浏览器驱动程序、自动化测试工具、测试框架以及所需的其他软件和硬件设备。

  3. 测试案例设计:根据测试计划,设计测试用例,编写测试脚本并进行测试数据准备。

  4. 测试执行:运行测试脚本,执行测试用例,并记录测试结果。

  5. 缺陷分析和报告:对测试结果进行分析和评估,对发现的问题进行缺陷报告,并与开发人员协商解决方案。

  6. 重新测试和确认:经过修复后的缺陷,进行重新测试和确认,验证问题是否已经得到解决。

  7. 性能测试和兼容性测试:针对Web应用程序的性能和兼容性进行测试。

  8. 测试总结和优化:根据测试结果进行总结和优化,不断改进测试流程和方法,提高测试效率和质量。

以上是Web自动化测试流程的基本实施过程,但具体实施步骤可能因应用程序的不同而有所区别。

三、Python+Selenium环境搭建

python+selenium自动化测试环境包括四个部分:python、selenium、chrome谷歌浏览器、chrome谷歌浏览器驱动。其中浏览器也可以是火狐,IE等。目前自动化的主流浏览器还是chrome谷歌浏览器

(1)python的安装

目前测试行业应用最广的编程语言当属Python为首。python现在主流是3.7的版本。安装很简单,在官网(官网地址:Welcome to Python.org)选择对应系统的版本直接下载,然后双击安装即可,安装路径可自定义,不是一定非要安装在C盘,但请尽可能避免中文路径。

web自动化测试框架落地实施全过程-测试环境搭建 (Selenium+Python)_第1张图片

python安装包后,需要配置环境变量,其实在3.7的安装过程中,第一个界面有一个“add python to path”的选项可以勾选(大概是这个名字)。勾选之后会自动将python添加到系统环境变量Path中。当然你也可以选择手动添加,添加方法如下:

我的电脑右键选择属性–>高级系统设置–>环境变量–>环境变量–>系统变量:找到path变量并修改,在Path路径的最前面加入:C:\Python37;C:\Python37\Scripts; (如果你的python安装在其他路径请做相应的改动,笔者这里是默认路径)

特别要注意:很多新手会把Path中原来的内容删除掉,笔者提醒一下这个绝对不能这样做,慎重!慎重!慎重!

安装之后,运行CMD窗口,输入python指令,用于校验python是否安装成功。如下图表示成功!

web自动化测试框架落地实施全过程-测试环境搭建 (Selenium+Python)_第2张图片

另附上python开发工具PyCharm的官方下载地址:Download PyCharm: Python IDE for Professional Developers by JetBrains

(2)selenium的安装

selenium可以通过pip命令进行安装,安装方法如下:

打开cmd窗口

输入:pip install selenium

等待cmd窗口提示successful,则selenium安装成功,如中途中断了继续输入pip install selenium重新安装,不影响!

(3)chrome浏览器

目前网上谷歌浏览器下载的坑太多了,很多网站做得跟官网太像了。一不小心就会入坑,这里笔者提供Chrome官网的下载地址:

Chrome官网:Google Chrome 网络浏览器

下载完成后双击会自动安装。等待安装完成即可。

(4)安装chrome浏览器驱动

当Selenium提出了WebDriver的概念之后,它提供了利用浏览器原生的接口,封装成一套更加面向对象的Selenium WebDriver API,直接操作浏览器页面里的元素,甚至操作浏览器本身(截屏,窗口大小,启动,关闭,安装插件)。

由于使用的是浏览器原生的接口,速度大大提高,而且调用的稳定性交给了浏览器厂商本身,显然是更加科学。然而带来的一些副作用就是,不同的浏览器厂商,对Web元素的操作和呈现多少会有一些差异,这就直接导致了Selenium WebDriver要分浏览器厂商不同,而提供不同的实现。例如Firefox就有专门的geckoDriver驱动,Chrome就有专门的Chrome驱动等。

这里特别要注意:

chrome浏览器驱动必须和安装的chrome浏览器版本对应。那么如何保证对应呢?

先检查chrome浏览器的版本:点击chrome浏览器右上角的三个点–>帮助–>关于Google Chrome,如下图所示:

web自动化测试框架落地实施全过程-测试环境搭建 (Selenium+Python)_第3张图片

 

2.chrome浏览器驱动下载地址:

Chromedriver驱动下载地址:CNPM Binaries Mirror

找到和上图chrome版本最接近的版本:上图为:78.0.3904.108,所以这里驱动选择:

web自动化测试框架落地实施全过程-测试环境搭建 (Selenium+Python)_第4张图片

编辑切换为居中

添加图片注释,不超过 140 字(可选)

下载完成后:把chrome驱动包放入:C:\python37 目录下 (这个是必须的)

四、八大元素定位

Web自动化测试八大元素定位是指在Web页面中对需要进行操作的元素进行精确定位,以便实现自动化操作。这八大元素定位包括:

  1. 元素ID:每个HTML标签都可以设置id属性,使用该属性可方便地定位元素。

  2. 元素name:通过元素名称定位元素,一般用于表单元素。

  3. 元素class name:使用CSS样式类名称定位元素。

  4. 元素tag name:通过标签名称定位元素,适用于找到多个相同的元素。

  5. 链接文本:通过链接文本定位链接元素。

  6. CSS选择器:通过CSS样式规则定位元素。

  7. XPath:使用XPath语法定位元素。

  8. DOM结构:使用元素的DOM层次结构定位元素。

以上八种方式可以组合使用,以获得更精确的元素定位。定位元素的准确性和稳定性对于Web自动化测试的成功非常重要,因此需要根据具体需求选择最佳定位方式。

五、项目实战

unittest管理测试用例的规则:

1.必须继承:unittest.TestCase

2.导包:import unittest

3.写一个以test_开头的测试用例。

为啥有没有main都没关系,都可以执行。原因是:unittest有两种运行方式,并且默认的还

是第一种运行方式: (巨坑)

1.命令行的运行方式(默认)

python -m unittest 模块名.py

python -m unittest 模块名.类名.方法名

2.main主函数运行方式(非默认)

main方式。

frameset(框架集,直接忽略)

frame(框架)/iframe(子框架)

导包的快捷键:Alt+Enter

定位一组元素:

windows自带的弹窗:

alert 只有一个确定按钮

confirm 有一个确定和一个取消按钮

prompt 除了确定和取消按钮外还有一个输入框。

都是:driver.switch_to.alert

六、设计模式

在Web自动化测试中,封装是一种非常重要的设计模式。通过封装,我们可以将操作页面元素的方法进行统一管理,减少代码冗余,提高可维护性和可读性。

具体来说,Web自动化测试中可以采用如下几种封装方式:

  1. 页面对象模型(Page Object Model):将每个页面封装成一个对象,对象中包含页面中所有需要操作的元素和操作方法。这种方式可以将测试脚本与页面的实现细节分离开来,提高了测试代码的可读性和可维护性。

  2. 模块化设计:将项目中的功能模块进行分解,每个模块都有独立的测试用例和测试脚本。这种方式可以减少代码耦合度、提高测试效率和可扩展性。

  3. 数据驱动设计:将测试数据和测试脚本进行分离,并将测试数据放在外部文件或数据库中。这种方式可以提高测试数据的复用性、减少测试脚本的冗余代码。

  4. 关键字驱动设计:将测试步骤封装成关键字,以关键字为单位编写测试脚本。这种方式可以提高测试脚本的可读性和可维护性。

以上几种封装方式都可以提高Web自动化测试的效率和可靠性,同时也可以减少测试代码的冗余和维护成本。具体采用哪种方式,需要根据项目需求、团队规模和技术水平来选择。

七、引入Pytest(解耦合)

默认的测试用例的运行规则:

1.测试模块必须以test_开头或者_test结尾。

2.测试类必须以Test

pip install pytest
pip install allure-pytest

3.测试用例必须以test_开头

pytest的运行的方式有三种

1.命令行

2.main方法

3.通过pytest.ini文件来运行。

pip install pytest
pip install allure-pytest

随意的切换。unitest/pytest都必须要灵活的掌握

pip install pytest
pip install allure-pytest

并且灵活的应用。

八、pytest结合allure-pytest插件生成漂亮的测试报告

pytest是一个非常流行的Python测试框架,可以方便地编写和运行各种类型的自动化测试。而allure-pytest插件则是为pytest提供测试报告生成功能的插件,可以生成漂亮、可视化的测试报告,帮助我们更好地了解测试结果。

下面是使用pytest和allure-pytest插件生成测试报告的步骤:

1、安装pytest和allure-pytest插件

pip install pytest
pip install allure-pytest

2、编写测试用例 编写pytest测试用例文件,并使用pytest标准的断言函数进行断言。

3、运行测试 在终端中进入测试脚本所在目录,执行以下命令:

pytest --alluredir ./result

这个命令会在当前目录下创建一个名为result的文件夹,并把测试结果保存到该文件夹中。

4、生成测试报告 在终端中输入以下命令:

allure generate ./result -o ./report --clean

这个命令会根据result文件夹中的测试结果生成一个名为report的文件夹,其中包含了测试报告的所有文件。

5、查看测试报告 在浏览器中打开report文件夹中的index.html文件,即可查看生成的测试报告。

通过以上步骤,我们就可以使用pytest和allure-pytest插件生成漂亮的测试报告了。同时,allure-pytest还提供了丰富的功能,如历史结果展示、图表分析等,可以帮助我们更好地了解自动化测试执行情况。

九、实现企业级的能够落地实施的web自动化框架以及实现报告的定制

报告的定制:logo的定制,模块的定制,用例的定制,严重程度,错误截图,用例描述, 参数化。日志监控。

编程语言:python,java

设计模块:PO,关键字驱动

用例管理:精通unitetst,pytest

数据驱动:ddt,pytest.mark。parametrize

二次封装:excel,yaml,ini,数据库封装

日志监控:logging

异常处理:try/except

jenkins:持续集成和无人值守

分布式运行:Grid

前端:html和js

十、Pytest的数据驱动@pytest.mark.parametrize()+Excel实现数据 驱动

方法详情:

@pytest.mark.parametrize(args_name,args_value)

args_name:参数名

args_value:参数值(list列表,tuple元祖,字典列表,字典元祖)

举例:

@pytest.mark.parametrize("caseinto",["百里","依然","星瑶"])
def test_01(self,caseinto):
print(caseinto)

举例:

@pytest.mark.parametrize("name,age",[["百里","12"],["依然","14"]])
def test_01(self,name,age):
print(name,age)

你可能感兴趣的:(selenium,测试工具,测试用例,python,经验分享)