postman | 接口测试 | newman & Jenkins 持续集成

377 阅读4分钟

介绍

本篇文章主要讲如何将 postman 的接口放到 Jenkins 上做集成测试。postman 本身是不支持通过命令行的方式执行接口测试,但是 newman 刚好填补了 postman 的短板,而 Jenkins 恰恰又是目前最好用的持续集成工具。三者结合起来完美地完成持续集成测试的流程。

本篇文章主要在本地进行测试,同理也可以将代码上传到 GitHub 维护,原理相同。

步骤

导出 postman 脚本

我们在使用 postman 进行接口测试的时候,都是通过点击工具上 Send 进行接口测试,基于在本地调试通过的接口,可以借助 newman 进行命令行的方式接口测试。

  1. 选择集合旁边的更多操作图标 ,然后选择导出image.png 在导出的时候,postman 会提示导出的版本信息,默认选择 V2.1 就好了

image.png 2. 导出环境变量

通常我们在进行接口测试的时候,都是配置不同的环境变量,那么这时候也是需要把环境变量导出来,要不然 newman 没法识别 {{Host}}变量是什么意思。

2.1 从侧边栏中选择环境。

2.2. 选择要导出的环境。

image.png

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 │                   10 │
├─────────────────────────┼─────────────────────┼─────────────────────┤
│                requests │                   10 │
├─────────────────────────┼─────────────────────┼─────────────────────┤
│            test-scripts │                   20 │
├─────────────────────────┼─────────────────────┼─────────────────────┤
│      prerequest-scripts │                   10 │
├─────────────────────────┼─────────────────────┼─────────────────────┤
│              assertions │                   10 │
├─────────────────────────┴─────────────────────┴─────────────────────┤
│ 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 image.png 路由到DashBoard —> 系统管理 —> 全局工具配置 ,拉到底部的 NodeJS 配置,安装 npm 包填上 newman,保存 image.png
    • Groovy image.png
    • HTML Publisher image.png
  • 配置工程
  1. 创建工程,输入工程名字,在下面选择构建一个自由风格的软件项目 ,点击确定
  2. 选择使用自定义的工作空间

因为我这里是使用本地执行项目的方式, 所以在这里我把我的本地项目地址放进去。/Users/myself/postman-test

image.png 3. 拉到构建环境 节点,选择 Provide Node & npm bin/ folder to PATH ,如果没有安装 Nodejs 插件就不会有这个选项。

image.png 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

image.png 5. 还是Build Steps,选择 Execute system Groovy script ,把System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")贴上去,主要是为了兼容报告的样式,要不然会出现样式混乱的情况

image.png 6. 拉到构建后操作,选择 Publish HTML Reports,把你的项目存放的报告地址贴上去,把 index.html 更改成你的项目报告名称即可,这里的名称一定要跟生成报告的名称一致,要不然 Jenkins 找不到报告的位置。

image.png 7. 执行构建,查看报告

image.png

image.png

扩展 postman monitor

当然,如果只是简单的接口测试,并没有太多的复杂场景或者多人维护的话,可以使用 postman 自带的 monitor 的功能。

image.png 这里的功能也是能够满足我们简单的接口测试运行监控的情况,如果需要一天执行很多次的话,postman 是需要收费的。 image.png

总结

好了,又到了篇尾了。本篇文章主要讲解如何通过 newman 以及 Jenkins 方式对接口进行持续集成,希望可以帮助到你在接口测试路上少走弯路。