介绍
本篇文章主要讲如何将 postman 的接口放到 Jenkins 上做集成测试。postman 本身是不支持通过命令行的方式执行接口测试,但是 newman 刚好填补了 postman 的短板,而 Jenkins 恰恰又是目前最好用的持续集成工具。三者结合起来完美地完成持续集成测试的流程。
本篇文章主要在本地进行测试,同理也可以将代码上传到 GitHub 维护,原理相同。
步骤
导出 postman 脚本
我们在使用 postman 进行接口测试的时候,都是通过点击工具上 Send 进行接口测试,基于在本地调试通过的接口,可以借助 newman 进行命令行的方式接口测试。
- 选择集合旁边的更多操作图标 ,然后选择导出。
在导出的时候,postman 会提示导出的版本信息,默认选择
V2.1就好了
2. 导出环境变量
通常我们在进行接口测试的时候,都是配置不同的环境变量,那么这时候也是需要把环境变量导出来,要不然 newman 没法识别 {{Host}}变量是什么意思。
2.1 从侧边栏中选择环境。
2.2. 选择要导出的环境。
newman 执行测试
- 安装 newman
npm install -g newman
- 执行测试
newman run postman.json -e env.json -r cli,html,json,junit --reporter-html-export report.html
- 运行结果
newman run postman.json -e env.json -r cli,html,json,junit --reporter-html-export report.html
newman
CouriersTest
→ postman
POST https://postman.com/list [200 OK, 12.88kB, 1705ms]
✓ subcode is 20000
┌─────────────────────────┬─────────────────────┬─────────────────────┐
│ │ executed │ failed │
├─────────────────────────┼─────────────────────┼─────────────────────┤
│ iterations │ 1 │ 0 │
├─────────────────────────┼─────────────────────┼─────────────────────┤
│ requests │ 1 │ 0 │
├─────────────────────────┼─────────────────────┼─────────────────────┤
│ test-scripts │ 2 │ 0 │
├─────────────────────────┼─────────────────────┼─────────────────────┤
│ prerequest-scripts │ 1 │ 0 │
├─────────────────────────┼─────────────────────┼─────────────────────┤
│ assertions │ 1 │ 0 │
├─────────────────────────┴─────────────────────┴─────────────────────┤
│ total run duration: 1777ms │
├─────────────────────────────────────────────────────────────────────┤
│ total data received: 12.62kB (approx) │
├─────────────────────────────────────────────────────────────────────┤
│ average response time: 1705ms [min: 1705ms, max: 1705ms, s.d.: 0µs] │
└─────────────────────────────────────────────────────────────────────┘
必须在同一个项目目录下运行 newman ,要不然会报出找不到路径的情况
执行完成之后,会在当前目录下生成 report.html 测试报告。
配置 Jenkins 持续集成
在本地调试完成之后,可以将脚本放到 Jenkins 集成测试了。
同样也是需要安装 Jenkins ,不过安装这个步骤大致可以省略了,只要去官方下载或者通过 brew install jenkins 下载即可了。下载完成之后,默认会启动 Jenkins,在浏览器上访问 http://127.0.0.1:8080/ 即可。
重点是配置这一块,因为 Jenkins 在我们刚安装完成之后,会给我们安装一下社区的插件,但是远远是不能够满足我们的需求的,所以我们还需要另外去安装 nodejs 以及 html report 插件
- 配置插件
- Nodejs
路由到
DashBoard —> 系统管理 —> 全局工具配置,拉到底部的 NodeJS 配置,安装 npm 包填上 newman,保存 - Groovy
- HTML Publisher
- Nodejs
- 配置工程
- 创建工程,输入工程名字,在下面选择构建一个自由风格的软件项目 ,点击确定
- 选择使用自定义的工作空间
因为我这里是使用本地执行项目的方式, 所以在这里我把我的本地项目地址放进去。/Users/myself/postman-test
3. 拉到构建环境 节点,选择
Provide Node & npm bin/ folder to PATH ,如果没有安装 Nodejs 插件就不会有这个选项。
4. 拉到Build Steps ,选择执行 shell,直接执行刚才我们写在 shell 里面的脚本即可
shell 脚本内容:
#!/bin/bash
newman run postman.json -e env.json -r cli,html,json,junit --reporter-html-export report.html
5. 还是Build Steps,选择
Execute system Groovy script ,把System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")贴上去,主要是为了兼容报告的样式,要不然会出现样式混乱的情况
6. 拉到构建后操作,选择 Publish HTML Reports,把你的项目存放的报告地址贴上去,把
index.html 更改成你的项目报告名称即可,这里的名称一定要跟生成报告的名称一致,要不然 Jenkins 找不到报告的位置。
7. 执行构建,查看报告
扩展 postman monitor
当然,如果只是简单的接口测试,并没有太多的复杂场景或者多人维护的话,可以使用 postman 自带的 monitor 的功能。
这里的功能也是能够满足我们简单的接口测试运行监控的情况,如果需要一天执行很多次的话,postman 是需要收费的。
总结
好了,又到了篇尾了。本篇文章主要讲解如何通过 newman 以及 Jenkins 方式对接口进行持续集成,希望可以帮助到你在接口测试路上少走弯路。