我正在参加「掘金·启航计划」搭建环境之前需要先理清楚各个环境的依赖关系,jenkins只支持windows命令行跟linux shell环境执行构建命令,而postman的测试脚本不能直接在命令行或shell环境执行,postman脚本需要有自己的执行环境,叫newman;而postman是基于javascript语言,所以newman环境还依赖于javascript的环境nodejs;所以整个过程是先搭建nodejs构造javascript环境,再搭建newman构造postman脚本运行环境,在集成到jenkins上。
1. 安装node.js
Node.js 就是运行在服务端的 JavaScript,是一个基于Chrome JavaScript 运行时建立的一个平台;Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好;
官网下载,直接安装。不用自己去配置环境变量,安装完成后会自动配好
官网地址:nodejs.org/en/
node –v 出现版本号表示安装成功
Linux系统下安装:
官网下载Linux安装包,后缀为.tar.xz
①下载后安装
xz -d node-v10.15.1-linux-x64.tar.xz
tar -xvf node-v10.15.1-linux-x64.tar
②添加环境变量
打开/etc/profile文件,添加如下两行
export NODE_HOME=/hanmk/node-v10.15.1-linux-x64(node.js的安装路径)
export PATH=PATH
③更新文件:
source /etc/profile
④检验
node -v
2. 安装newman
通过npm来安装newman,npm 是 JavaScript 的包管理工具,并且是 Node.js 平台的默认包管理工具。通过 npm 可以安装、共享、分发代码,管理项目依赖关系;
一般安装好node.js后会默认安装好npm,直接使用即可
npm -g install newman
newman –v 出现版本号表示安装成功
linux系统下:
npm -g install newman
newman –v
3. 安装 newman-reporter-html
如果想生成html格式的测试报告,还需要安装 newman-reporter-html:
npm install -g newman-reporter-html
Linux系统下:
npm install -g newman-reporter-html
4. newman运行脚本
把接口测试脚本和环境变量脚本导出放到一个目录中,在cmd窗口中切换到该目录,执行如下命令:(-n 2表示迭代2次)
① newman run 自动化测试.postman_collection.json –n 2 -e 测试环境.postman_environment.json 执行完成后,出现一个类似报表的东西,显示整体运行结果
② newman run 自动化测试.postman_collection.json -e 测试环境.postman_environment.json --reporters cli,json,html --reporter-json-export report-json.json --reporter-html-export report-html.html
--reporters cli,json,html --reporter-json-export report-json.json --reporter-html-export report-html.html表示生成json和html格式的报告。
在当前文件夹下生成两个报告文件:
打开html格式的文件,展示结果如下:
newman run –h查看更多参数
Newman命令:
:必填参数,是指单个请求或者从postman导出的集合文件(也就是json格式的脚本)
options是一些组合参数,介绍下我用到的几个参数
(1) -e 指定环境变量,把在postman中设置的环境变量导出,然后再把路径填写到这里即可
(2) -g 指定全局变量,把在postman中设置的全局变量导出,然后再把路径填写到这里即可
(3) -n 指定迭代次数,即运行n次脚本
(4) --timeout-request 指定请求的超时时间
(5) -r 指定运行报告的格式,可以为json格式、html格式,默认为cli格式,即在命令行展示运行结果
-d xxx.json/xxx.csv request中请求调用的参数文件
5. 集成到Jenkins中
(1)构建自由风格的软件项目
(2)在Build标签配置shell脚本
Linux服务器选择执行shell,Windows系统选择执行Windows批处理命令;
① 在填写shell脚本或批处理命令前,需要把在postman中导出的json格式的脚本上传到服务器某个目录下
② Jenkins在远程执行服务器中的脚本时,也需要切换到测试脚本所在目录(或者直接以绝对路径指定脚本),然后调用newman命令来执行
注意:在运行Windows批处理命令时,newman run后面的文件可以直接使用绝对路径;
如果想使用相对路径:
方式一:使用Jenkins 的工作空间
需要将被测脚本放置在Jenkins的工作空间中,默认在安装目录(C:\Program Files (x86)\Jenkins)下的workspace\postman自动化接口测试(构建的项目名称)
方式二:使用自定义的工作空间
在Jenkins的general中点击高级,勾选“使用自定义的工作空间”,将被测脚本、环境变量及参数文件放置到该目录下
Linux系统中:
source /etc/profile #不添加此命令,会导致Jenkins在构建时,提示找不到newman命令从而构建失败
#!/bin/bash -ilex
cd /hanmk/postman_script #被测脚本所在目录
newman run Test.postman_collection.json -e base_url.postman_environment.json --reporters cli,json,html,junit --reporter-json-export report-json.json --reporter-html-export report-html.html --reporter-junit-export report-xml.xml
注意:
如果在Windows系统,Jenkins构建项目后提示:'newman' 不是内部或外部命令,也不是可运行的程序或批处理文件。
原因:本地nodejs自定义安装,自动生成环境变量。
解决办法:nodejs在系统环境变量中,而npm生成到了用户环境变量里,因此将npm配置到系统环境变量中就成功了
(3)将newman生成的html格式的测试报告在Jenkins中展示出来
① 需要安装插件:Publish HTML reports
在插件管理中搜索并下载安装:
② 安装完成并重启完Jenkins后,在项目配置中-构建后操作-增加构建后操作步骤-publish html reports
HTML directory to archive (要归档的HTML目录):填写相对于工作空间的html报告所在的目录,需要填写真实存在的目录名称(该文件夹需要事先创建好)
Index page[s](索引页): 报告目录中提供链接的文件,需要填写一个已经存在的html文件(此处可以在htmlreports中创建一个html文件,或者直接把newman生成的html格式的报告放到这个目录下)
Index page title[s] (Optional):选填项,索引页标题,不填会默认取html的文件名
Report title(报告标题):要为构建/项目显示的报告的名称
之所以需要自己创建报告目录和报告文件,是因为这个插件不会自己创建这些,如果工作空间没有这些目录和文件,构建的时候会报错
③ 完成配置后,进行构建,构建成功后,可点击查看html格式的报告
构建成功后,可查看到生成的测试报告文件:
④ 解决html报告显示样式问题:
jenkins从安全性考虑,禁止了css和js的加载,所以无法展示
1.下载插件:Groovy Postbuild,安装并重启
2.项目配置-增加构建后操作步骤:Groovy Postbuild,添加groovy script:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
3.再次构建,可查看到在jenkins中展示的html格式的测试报告如下:
或者修改jenkins配置文件:
打开jenkins安装目录下的jenkins.xml文件,找到arguments这一行,修改如下,改好后保存,重启jenkins
原来是:-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar
修改后:-Xrs -Xmx256m -Dhudson.model.DirectoryBrowserSupport.CSP= -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar
构建过程中出现的问题:
问题1:控制台输出中文乱码
解决办法:
- 进入【系统管理】->【系统设置】->全局属性:KEY: LANG; VALUE:zh.CH.UTF-8
2. 修改Jenkins所在目录下的Jenkins.xml文件,找到,在中间添加-Difile.encoding=utf-8
- 设置jenkins所在服务器环境变量,右键我的电脑→属性→高级系统设置→环境变量→新建系统变量,添加变量名:JAVA_TOOL_OPTIONS 变量值:-Dfile.encoding=UTF8
4. 完成上述步骤,重启Jenkins服务,立即构建
问题2::控制台输出结果中:Build step 'Execute Windows batch command' marked build as failure问题
原因:jenkins执行命令,会把命令生成一个批处理文件执行,而newman命令对于批处理来说是外部命令,所以要加call表示调用。而jenkins执行windows命令,若退出代码不为0 ,则jenkins会将构建标记为失败,所以需要加上exit 0表示执行完成退出
解决方法:构建命令在newman前面加上call,最后加上exit 0
(4) 行结果自动发送邮件
① 下载并安装插件:Email Extension Plugin
② 统配置,配置邮箱信息
1. 配置Jenkins Location
Jenkins url:默认是http://localhost:8080/,修改为自己电脑的ip地址,后面跟jenkins的默认端口
系统管理员邮件地址:这个系统管理员邮件地址和发件人的地址必须保持一致,否则邮件无法发出
2.Extended E-mail Notification
Default Content Type:默认的邮件内容格式,文本类型或HTML类型
Default Recipients:设置默认的邮件接收人,设置后就可以在任务的配置中使用$DEFAULT_RECIPIENTS来直接发送邮件,非常方便
具体的格式:抄送用“cc:”前缀,密送用“bcc:”前缀,不使用前缀默认为收件人;多个接收人,用英文逗号分隔,比如cc:someone@example.com, bcc:bob@example.com Default Subject:默认的邮件主题,BUILD_STATUS!构建的编号和构建的状态
Default Content:默认内容,这步可以省略,具体可以到任务的配置中去设置
- 配置触发器Trigger
Default Triggers:默认的邮件触发器,就是什么情况下触发邮件的发送
-
配置Jenkins自带的邮件功能
- 测试发送邮件
③构建后操作
在项目中-配置-增加构建后操作步骤:选择editable email notification:
1. 邮件主题和内容
可以使用默认的:DEFAULT_CONTENT
使用默认的主题和内容,则显示如下:
也可以修改邮件内容,修改如下:
修改后邮件内容显示如下:
2. 添加附件
Attachment:邮件附件,选填项,可以将测试报告添加到邮件附件中,取htmlreports目录下的所有以.html格式的文件
Attach Build Log:邮件的构建日志,选填项,我选择的是发送邮件的附件会包含压缩后的项目构建的日志,也可以选择压缩或不压缩
3. 修改触发器
点击advanced settings
Triggers选择always:表示立即构建就会发送邮件,也可以设置为成功或失败时发送
④ 构建,验证
保存设置后,立即构建,待构建完成,查看控制台日志和邮箱是否接收到正确的邮件
控制台日志: