使用 Postman 实现 API 自动化测试
背景介绍
相信大部分开发人员和测试人员对 postman 都十分熟悉,对于开发人员和测试人员而言,使用 postman 来编写和保存测试用例会是一种比较方便和熟悉的方式。但 postman 本身是一个图形化软件,相对较难或较麻烦(如使用 RPA)实现自动化测试。幸运的是,postman 还提供了一个命令行工具 newman,我们可以借助 postman + newman 来实现 API 自动化测试。
名词解析
1. Collection
Collection 是一组保存的请求,postman 中发送的每个请求都会显示在侧栏的 ”历史记录“ 选项卡下。请求数量比较少的时候,通过历史记录来重用请求会比较方便。随着请求量的增长,在历史记录中查找特定请求可能会非常耗时。此时,你可以将所有请求保存为一个 collection,以便于访问。
2. Environment
Environment 是一组可以在 postman 请求中使用的变量。你可以根据不同的环境(如 dev、test、prod 等),把一组相关的变量放到不同的 environment 文件中,来对不同的环境进行 API 自动化测试。
使用说明
我们以测试百度的 https://www.baidu.com/sugrec 这个 API 作为示例。
1. 创建 Collection
新建 collection:

新建请求:

测试请求,状态码返回 200:

编写测试断言并验证断言:
pm.test("Return 200", function() {
pm.response.to.have.status(200)
})

2. 创建 Environment
新建 environment:

填写参数信息,这里简单使用 host 作为参数:

在 collection 的请求中使用 host 参数,并进行测试:

3. 导出 Collection 和 Environment
导出 collection 为 collection.json:


导出 environment 为 environment.json:


3. 执行 API 测试
我们只需要基于导出的 collection.json 和 environment.json 执行一条 docker 指令即可完成 API 测试:
docker run --rm -i -v /root/postman:/etc/newman \
--entrypoint sh postman/newman:alpine -c \
'npm i -g newman-reporter-html; \
newman run collection.json \
--suppress-exit-code 1 \
--color off \
--reporters cli,html\
--reporter-html-export api_report.html \
--environment=environment.json'
指令解析:
| 项目 | 说明 |
| docker run | 启动 docker 容器 |
| --rm | 退出容器时销毁容器 |
| -i | 交互模式 |
| -v /root/postman:/etc/newman | 目录挂载 |
| --entrypoint sh postman/newman:alpine -c | 容器执行指令 |
| npm i -g newman-reporter-html | 安装 html 报告插件 |
| newman run collection.json | 指定测试 collection.json |
| --suppress-exit-code 1 | 指定错误状态码为 1 |
| --color off | 关闭颜色 |
| --reporters cli,html | 输出命令行和 html 报告 |
| --reporter-html-export api_report.html | 设置输出 html 文件名 |
| --environment=environment.json | 指定 environment.json 文件 |
执行结果:


查看 html 报告:

4. 集成 CI 实现 API 自动化测试
你只需要针对你的代码项目准备好 collection.json 和 environment.json,把它们存放到代码中的某个目录,然后在 jenkins 或 gitlab-ci 中添加执行上面介绍的 docker 指令即可。
参考总结
使用 Postman 实现 API 自动化测试的更多相关文章
- 使用PostMan进行API自动化测试
最近在进行一个老项目的升级,第一步是先将node版本从4.x升级到8.x,担心升级会出现问题,所以需要将服务的接口进行验证:如果手动输入各种URL,人肉check,一个两个还行,整个服务..大几十个接 ...
- 使用 Postman 做 API 自动化测试
Postman 最基本的功能用来重放请求,并且配合良好的 response 格式化工具. 高级点的用法可以使用 Postman 生成各个语言的脚本,还可以抓包,认证,传输文件. 仅仅做到这些还不能够满 ...
- 基于postman的api自动化测试实践
测试的好处 每个人都同意测试很重要,但并不是所有人都会去做.每当你添加新的代码,测试可以保证你的api按照预期运行.通过postman,你可以为所有api编写和运行测试脚本. postman中的测试 ...
- 基于Postman的API自动化测试
https://segmentfault.com/a/1190000005055899 1. 安装 两种安装方式,我热衷于以chrome插件形式安装 Chrome插件 Mac App 2. 发送请求 ...
- <API自动化测试>Centos-Newman
一.介绍: 在测试和开发中,有一款API测试工具一直占据着武林盟主的地位,那就是声名远播的Google公司的Postman. Postman原先是Chrome浏览器的一个插件,后面发展成了一个应用程序 ...
- <自动化测试方案_6>第六章、API自动化测试
第六章.API自动化测试 (一)工具实现 目前大众接口测试的工具有:Postman.SoupUI.jmeter他们的特点介绍有人做个宏观的研究,这里进行引用:https://blog.csdn.net ...
- 接口测试 Postman 做接口自动化测试_入门篇
可能是目前最好用的web接口调试工具 无需注册(注册后可多终端同步用例) 免费(每年付费$60可用云服务,30天免费试用) 保存历史记录 支持录制请求 基于Chrome的V8引擎,支持JS脚本(基本支 ...
- Postman+Newman+jenkins实现API自动化测试
最近自己在学习用postman+newman+jenkins实现API自动化测试,这里做个回顾和记录.(此次是在windows上进行的环境搭建) 一.说明 1.大致思路:利用postman做接口调试所 ...
- Java Fluent Restful API自动化测试框架
这是一个Restful API自动化测试框架,这是一个能让你写出高可读性测试代码的测试框架! 项目目标 话说目前行业内,Restful API自动化测试框架已经不是稀罕物了,各个语言都有自己的实现机制 ...
随机推荐
- PCB常用低速、高速板材参数性能(2)
- 《CSS世界》笔记二:盒模型四大家族
上一篇:<CSS世界>笔记一:流/元素/尺寸下一篇:<CSS世界>笔记三:内联元素与对齐 写在前面 在读<CSS世界>第四章之前,粗浅的认为盒模型无非是margin ...
- Ueditor上传本地音频MP3
遇到一个项目,客户要求能在编辑框中上传录音文件.用的是Ueditor编辑器,但是却不支持本地MP3上传并使用audio标签播放,只能搜索在线MP3,实在有点不方便.这里说一下怎么修改,主要还是利用原来 ...
- 一份你可以在 <head> 里设置的列表
A list of everything that could go in the <head> of your document github 原地址:https://github.co ...
- 左手Cookie“小甜饼”,右手Web Storage
目录 1. Web Storage 2. Cookie机制 3. 二者的联系与区别 1.Web Storage 1.1 概述 Web Storage是HTML5提供的一种新的浏览器端数据储存机制,它提 ...
- Spark周总结(一)
本周学习内容: 1.搭建虚拟机Spark环境 2.idea编写Scala脚本并在yarn上运行 总结: 这周是回家第一周,虽然没啥事,但是还是想放松放松,也是万事开头难,跟着教程做,但总有几步跟教程上 ...
- ubantu之Git使用
本文讲述在Ubuntu 14.04 x64环境下,如何安装Git,配置连接GitHub,并且上传本地代码到github. 一. 注册Git账户以及创建仓库 要想使用github第一步当然是注册gith ...
- Shiro+springboot+mybatis+EhCache(md5+salt+散列)认证与授权-03
从上文:Shiro+springboot+mybatis(md5+salt+散列)认证与授权-02 当每次进行刷新时,都会从数据库重新查询数据进行授权操作,这样无疑给数据库造成很大的压力,所以需要引入 ...
- SpringMVC获取请求参数-基本类型
1.Controller中的业务方法的参数名称要与请求参数的name一致,参数值会自动映射匹配 (json形式) <dependency> <groupId>com.faste ...
- JDK1.8.0_181的无限制强度加密策略文件变动(转载)
JDK1.8.0_181的无限制强度加密策略文件变动 原文地址 https://my.oschina.net/my1313677/blog/3109613 作者 葉者 日常记录 2019/09/23 ...