Jenkins配置Windows节点实现自动化测试(二)
测试脚本提交到gitlab
仓库地址
项目结构:
├─common
│ └─存放公共函数及常用工具类封装
├─conf 存放配置文件及全局变量
├─html_report 存放html测试报告
├─logs 存放测试日志
├─testcases
│ ├─存放所有测试用例,按模块划分不同模块的接口用例
├─test_data 存放测试数据,yaml文件格式
├─run_api_cases 运行testcases所有测试用例
├─requirements python第三方库
└─.gitignore git忽略文件
Jenkins新建构建任务
Jenkins首页点击新建任务
输入任务名称InterfaceAutoTest和选择构建一个自由风格的软件项目
配置-General
General中配置工作空间,定位到当前项目地址,方便直接执行文件。
General中另一个需要配置点,“限制项目的运行节点”选择需要运行的节点,一般会配置一个Windows运行节点用来UI自动化测试
配置-源码管理
自动化测试框架时放在gitlab上的,因此用git方式管理源码
Repository URL:为gitlab上代码仓地址,通过ssh通信。
Credentials可选择root账户已经配置好的(自己配置的话需要有权限登录后台生成ssh-key,把公钥放在gitlab上,私钥配置在这里,jenkins通过私钥与gitlab上公钥进行ssh通信,拉取gitlab上最新代码)
指定分支:可配置成git代码仓库中的指定仓库,这里目前是master。
配置-构建触发器
可以选择不同构建,常用定时构建、其他工程构建后触发,用于项目自动化部署后触发
配置-构建环境
(暂未用到)
配置-构建
执行shell脚本
用来执行构建步骤,我这里选择的执行shell脚本,用来执行python脚本run_api_cases.py为执行测试脚本。
可以添加多个构建步骤,同时也可以安装一些插件是用来添加构建步骤的,如:Groovy Script
执行Groovy脚本(解决HTML报告样式问题)
Groovy Script:用来执行Groovy脚本,这里执行的这行脚本是用来设备jenkins中HTML报告中样式出错问题
(原因:Jenkins为了避免受到恶意HTML/JS文件的攻击,会默认将安全策略CSP设置为:sandbox; default-src ‘none’; img-src ‘self’; style-src ‘self’;在此配置下,只允许加载:Jenkins服务器上托管的CSS文件、Jenkins服务器上托管的图片文件)
这里还有个问题,如果不是管理员用户,且第一次新增该脚本时,不勾选下方Use Groovy Sandbox执行会报错,执行后需要管理员在
系统管理–In-process Script Approval允许刚刚运行的脚本(参考)
配置-构建后操作
添加HTML report(需要安装插件Publish HTML reports)
HTML directory to archive:报告的文件夹路径
Index page[s]:html报告文件名
添加企业微信通知
立即构建任务
进入创建的构建工程中,点击立即构建,可以在左下方看到正在构建的任务,点击查看详情
构建结束可以在当前页面查看HTML Report报告
同时可以在企业微信群众接收到通知
至此,Jenkins集成Python自动化测试框架完成,可以通过gitlab管理源码、执行成功后可查看HTML报告和企业微信通知。
(后续添加新功能再更新…)
遇到的问题
报错一:javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
通过网上查阅博客,原因时jdk1.8版本导致SSL调用权限上有问题(不太懂),建议是修改java.security里面的,(删掉SSLv3就是允许SSL调用)
java.security文件在java安装目录下jre/lib/security/java.security这个位置,不知道也可以用find名称查找一下
[root@centos-7 test_001]# find / -name java.security
/usr/local/jdk8u312-b07/jre/lib/security/java.security
删除’SSLv3,'保存退出后,重启jenkins服务(systemctl restart jenkins)
重新在jenkins中构建任务时,发现又报了个错误
报错二:javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
(截图找不到了…)
t通过网上查阅资料,jdk1.8的高版本2**除了SSLv3,还有后面的TLSv1,TLSv1.1都是关于SSH的,将它们一起删除后重启jenkins,成功解决该问题,如下图
成功发送企业微信通知
问题三:企业微信通知"查看控制台"链接打不开,查看链接端口号不正确
原因是:jenkins部署成功的后更换过端口号,导致发送通知链接中端口号不正确,还是之前的没有修改,需要手动修改
打开系统管理–系统配置–Jenkins Location–Jenkins URL修改成现在的地址保存就可以了