2_PC-Web端-UI自动化搭建-使用方法
- 2_PC-Web端-UI自动化搭建-使用方法
- 拉取代码
- 框架使用
- 项目结构说明
- 测试浏览器路径设置
- 数据库设置
- 使用Selenium IDE录制脚本
- 运行用例集
- 主运行文件
- 集成到Jenkins
- 配置Jenkins
- 创建job
拉取代码
打开Pycharm
按照下图点击
我们创建一个新的环境
点击确定
再回到主页面
这里先拉取我的代码,后续可以替换成自己的代码仓库
我的建议是去我的仓库把我的代码fork到自己的仓库,然后拉自己的仓库
https://github.com/ZiJie26/UI_AutoTesting.git
注意这里要选中你刚刚创建的环境:
然后打开控制台,输入:pip install -r requirements.txt
安装完后可以输入pip list
查看是否安装成功。
框架使用
拉下来的代码目录结构是这样的:
.
│ conftest.py # pytest的全局配置文件,可以在此定义测试的前置/后置操作、hook函数等
│ main_run.py # 主入口文件,用于启动整个测试项目的执行
│ pytest.ini # pytest配置文件,用于配置pytest的运行参数,如测试路径、插件配置等
│ README.md # 项目说明文档,介绍项目的背景、使用方法及结构说明
│ requirements.txt # 项目所需的依赖库列表,用于通过pip安装依赖
│
├─cases
│ │ __init__.py # 表示该目录为Python包,可用于初始化相关配置或依赖
│ │
│ ├─data
│ │ test_data.json # 测试数据文件,存储各个测试用例所需的数据,通常以JSON格式保存
│ │
│ └─testFeature
│ test_test1.py # 第一个测试用例文件,使用pytest框架,定义UI自动化测试的具体场景
│ test_test2.py # 第二个测试用例文件,包含另一组自动化测试场景
│ __init__.py # 初始化文件,标记此目录为Python包,便于模块导入
│
├─config
│ cookies.json # 登录或其他需要的cookies配置文件,保存登录后使用的cookie信息
│ db_config.json # 数据库配置文件,存储数据库连接信息和参数
│ dev_paths.json # 开发环境路径配置文件,包含项目在开发环境下的URL或路径信息
│ test_paths.json # 测试环境路径配置文件,包含项目在测试环境下的URL或路径信息
│
├─page
│ base_page.py # 页面基础类,封装常用的页面操作,如点击、输入文本等,是其他页面类的父类
│ __init__.py # 标记page目录为Python包,便于模块导入
│
├─suites
│ suit1.py # 测试套件1,组合多个测试用例,作为一组执行
│ suit2.py # 测试套件2,定义另一组测试用例的组合
│ __init__.py # 标记此目录为Python包,便于模块导入
│
├─tools
│ cleanup_utils.py # 工具文件,包含清理测试环境或其他清理任务的工具函数
│ database_utils.py # 数据库工具文件,提供操作数据库的函数,如增删查改等操作
│ sl_cookies.py # 与cookie相关的工具函数,用于cookie的读取、写入或删除操作
│ webdriver_setup.py# WebDriver配置工具文件,用于配置和启动WebDriver
│ __init__.py # 标记tools目录为Python包,便于模块导入
项目结构说明
-
根目录文件
conftest.py
:这是pytest的全局配置文件,用于定义测试的前置/后置操作、fixture等通用的配置信息。main_run.py
:项目的主运行文件,用来配置测试的启动逻辑,可以控制执行哪些测试套件或具体的用例。pytest.ini
:用于pytest的配置,可以在这里设置一些pytest运行时的参数,比如测试路径、插件设置等。README.md
:文档文件,用于说明项目的目的、安装步骤、如何运行等信息。requirements.txt
:Python项目的依赖文件,列出了所有运行该项目所需的库和版本信息。
-
cases目录
cases/__init__.py
:标记cases
目录为Python包,允许从外部导入包中的模块。cases/data/test_data.json
:存放测试用例所需的数据,方便测试用例动态使用不同的数据集。cases/testFeature/
:用于存放测试用例的具体文件,如test_test1.py
和test_test2.py
,这些文件中通常会使用pytest框架定义具体的测试场景。
-
config目录
- 用于存放项目运行环境相关的配置文件,如数据库连接信息(
db_config.json
)、测试环境路径(test_paths.json
)等。不同的环境会有不同的配置文件。
- 用于存放项目运行环境相关的配置文件,如数据库连接信息(
-
page目录
base_page.py
:封装了常见的页面操作和元素查找方法,其他页面类会继承自这个基础类,用于简化代码复用。__init__.py
:标记page
目录为Python包,便于模块之间的引用。
-
suites目录
- 存放测试套件文件,测试套件是多个测试用例的集合,便于按照不同的功能或模块进行批量测试执行。
-
tools目录
- 存放一些辅助工具文件,例如清理工具(
cleanup_utils.py
)、数据库操作工具(database_utils.py
)、WebDriver配置工具(webdriver_setup.py
)等。
- 存放一些辅助工具文件,例如清理工具(
测试浏览器路径设置
在config\test_paths.json文件里设置chrome for testing的路径
数据库设置
有时候会需要读取数据库的一些数据来验证,比如说测试登录信息是否存储到数据库中
在config\db_config.json文件里输入要连接的数据库信息
注意!test_test1.py中有数据库查询代码的示例,但是你是没办法直接用的,得改成自己的
使用Selenium IDE录制脚本
安装完之后可以把它固定显示
点击上图3号箭头打开下图页面,点第三个选项新建一个Project
点击录制之后会弹出被测网站的新窗口,在那个窗口进行你的测试操作(建议不要有多余操作)
下图就是在百度首页输入“hi”然后回车后录制下来的内容:
注意!有些情况下这个插件并不能成功复现你的操作,是插件的问题,这时候就需要导出成脚本在本地运行了
点击export导出py脚本
把导出之后的文件放到项目的case/testFeature下(testFeature文件夹类似于存放某个功能模块的用例的文件夹,例如你可以在case文件夹下创建Login文件夹,然后在里面放所有和登录有关的用例)
将代码修改一下,让其继承Base类,Base类里已经包含了启动和结束时的处理,所以我们把setup和teardown method方法给删掉。然后在用例方法前面打上demo标记,因为我们在pytest.ini
文件里设置了仅运行demo或者smoke标记的测试
然后在终端里输入pytest .\cases\testFeature\test_untitled.py
运行该脚本
可以看到运行成功的信息和生成的html报告位置:
可以直接点击打开,是这样的:
这个本地报告可以方便对代码调试,更快速的看到是哪个用例出了问题。
同时每次运行过后都会在logs文件夹下打印出日志,如果报错的话会把报错信息也打印出来,同样方便对代码进行调试
还可以输入allure serve .\report\allure-results
查看本次运行的allure报告(一般用不到,本地的allure无法显示结果趋势,要在Jenkins上才能发挥全部能力)
运行用例集
除了使用pytest
命令运行单个文件之外,还可以运行集合数个用例的用例套件,落实到业务需求的话,举个例子:你可以创建一个auth_suit.py,里面放登录注册注销等用户认证相关的用例。
我这里就在suites文件夹下面创建用例套件suit1.py
,然后在里面添加想要了我想执行的用例:
可以运行pytest .\suites\suit1.py
命令来执行这个套件,但是一般也只是本地调试的时候可以更灵活的执行用例,真正部署到Jenkins上自动执行的时候都是执行main_run.py
这个主运行文件。
主运行文件
根目录下的main_run.py
就是整个程序的主运行文件,在这里可以配置需要运行的测试套件,我这里就是运行suit1和suit2并把这两个套件命名为test1和test2
一般直接运行该文件python main_run.py
就可以运行这里面的所有套件,当然也可以选择其中几个套件运行,比如说我新添加了suit3,但只想执行suit1和suit2,就执行python main_run.py test1 test2
,和前面pytest的方法的区别是,这个只需要一次命令可以执行多个套件。
集成到Jenkins
这里使用Jenkins作为持续集成工具,可以在代码构建完之后执行我们的自动化测试,不过目前仅是演示使用方法,用的是我本地的电脑,并非服务器
配置Jenkins
找到这里,填上你的jdk目录
然后这里修改为所安装的git的目录
这里让它自动安装就行
点击应用保存。
然后点击这里配置环境变量,建议把你能想到的目录都加上去
不知道conda目录去设置里找,记得把目录下Scripts也要加上
配置完环境变量之后保存,回到主页
创建job
这里的仓库链接可以填我的或者fork之后你自己的,建议还是填你自己的方便后面修改用例
搞完应用保存,就部署完了。
可以点击这里开始执行脚本
执行完后
至此搭建全部完毕
后期既可以把这个job独立出来当作检测历史功能的回归测试
也可以新增代码到pipeline里做冒烟测试