远程分布式执行UI自动化项目搭建

3,997 阅读3分钟

远程分布式执行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服务启动的地址

1d6ba7ede3c163b4cddbeae16cbae3e3.png

上传到自己的git仓库中

jenkins
创建自动化jenkins工程

构建执行shell

# jenkins添加环境变量,否则可能会有无法识别到poetry的问题
PATH=/root/.local/bin 
# 安装依赖
poetry install
# 查看依赖
poetry show
# 执行项目
poetry run python main.py
创建allure报告Jenkins工程

添加构建触发器

1c0df7bb7356057ff0a5c63389221f60.png

添加构建后操作,需按照allure插件

48eca382efedc91dc15c3f0c6d9d3628.png 此时构建jenkins服务的话,基本就可以实现远程部署执行了

查看allure报告

613e4e1be4569f12ad78bd6c283e8a21.png

搭建novnc监听

下载novnc

git clone https://github.com/novnc/noVNC.git

启动服务

cd noVNC/
utils/novnc_proxy  --vnc xx.xxx.xxx:5900 # vnc监听地址,由docker启动的镜像服务得出

novnc页面,密码默认是secret,看到这个页面就证明监听端口部署好了

aa57cdb51271ac9845e8cac86157b053.png

自动化项目模板目录结构

├─.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