远程分布式执行UI自动化项目搭建
介绍
项目整个流程是使用pytest+selenium编写UI自动化,再部署远程分布式服务,jenkins集成UI自动化,再由jenkins远程执行UI自动化,执行过程中可监控,执行结束可微信通知查看报告
注意!本文不会阐述如何安装python、docker、jenkins工程构建的内容,如何需要请另行百度
框架
使用pytest管理用例:用例维度分为用例集文件夹->用例集->用例
selenium操作元素:action中二次封装元素操作
allure生成报告:jenkins中生成查看allure报告
liunx部署远程分布式服务:docker部署远程分布式服务,远程执行
jenkins集成执行:jenkins远程执行任务,并在jenkins中生成allure报告
模板下载
实操部署
windows和liunx下安装相同版本号的python,具体步骤在此就不赘述了
liunx
liunx安装谷歌浏览器
# 下载谷歌浏览器
yum install https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
# 安装谷歌浏览器
dpkg -i google-chrome-stable_current_amd64.deb
# 驱动设置为全局
mv chromedriver_linux64 /root/src
liunx下安装docker并下载镜像
# 下载单独运行Selenium带Chrome和VNC服务器的镜像
docker pull selenium/standalone-chrome-debug
如果需要分布式执行,可以下载hub镜像和node镜像,再连接起来。
启动服务
# -p 9515:4444为selenium-standalone-chrome-debug的执行端口(9515为docker端口,4444为映射到宿主机的端口)
# -p 5900:5900为监听vnc的端口
# 内存不足卡死,可以使用--shm-size=2g,官网建议为2g
docker run -tid --name selenium-standalone-chrome-debug -h selenium-standalone-chrome-debug --memory 1g --memory-swap -1 -p 9515:4444 -p 5900:5900 --shm-size=2g selenium/standalone-chrome-debug
查看镜像日志,定位问题
docker logs 镜像名称
poetry
安装poetry包管理工具,以下步骤liunx和windows都适用
# 安装pipx 虚拟隔离环境
pip install pipx
# 安装包管理器
pipx install poetry
# 将安装的包都添加到环境变量中,添加完需要重启终端
pipx ensurepath
UI自动化模板
下载UI自动化模板
git clone http
# or
git clone ssh
修改模板的监听地址,地址为docker服务启动的地址
上传到自己的git仓库中
jenkins
创建自动化jenkins工程
构建执行shell
# jenkins添加环境变量,否则可能会有无法识别到poetry的问题
PATH=/root/.local/bin
# 安装依赖
poetry install
# 查看依赖
poetry show
# 执行项目
poetry run python main.py
创建allure报告Jenkins工程
添加构建触发器
添加构建后操作,需按照allure插件
此时构建jenkins服务的话,基本就可以实现远程部署执行了
查看allure报告
搭建novnc监听
下载novnc
git clone https://github.com/novnc/noVNC.git
启动服务
cd noVNC/
utils/novnc_proxy --vnc xx.xxx.xxx:5900 # vnc监听地址,由docker启动的镜像服务得出
novnc页面,密码默认是secret,看到这个页面就证明监听端口部署好了
自动化项目模板目录结构
├─.venv # 虚拟环境
├─action # slenium操作封装
├─allure # 报告
├─driver # driver 管理
├─logs # 日志
├─pages # 页面对象,包含页面上获取元素的方法和组合操作
├─testcase # 测试用例集
├─testdata # 测试数据
├─tools # 工具函数
│ .gitignore # git
│ constant.py # 常量
│ main.py # 主函数,执行文件来启动pytest,而不是命令行,方便配置
│ poetry.lock # 环境版本映射
│ pyproject.toml # 包管理
│ pytest.ini # pytest 配置
│ README.md
│ 测试用例.puml