使用 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:

编写测试断言并验证断言:

复制代码
  1. pm.test("Return 200", function() {

  2. pm.response.to.have.status(200)

  3. })

2. 创建 Environment

新建 environment:

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

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

3. 导出 Collection Environment

导出 collection 为 collection.json:

导出 environment 为 environment.json:

3. 执行 API 测试

我们只需要基于导出的 collection.json 和 environment.json 执行一条 docker 指令即可完成 API 测试:

复制代码
  1. docker run --rm -i -v /root/postman:/etc/newman \

  2. --entrypoint sh postman/newman:alpine -c \

  3. 'npm i -g newman-reporter-html; \

  4. newman run collection.json \

  5. --suppress-exit-code 1 \

  6. --color off \

  7. --reporters cli,html\

  8. --reporter-html-export api_report.html \

  9. --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 指令即可。

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

视频文档获取方式:

这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

相关推荐
Luminbox紫创测控1 天前
太阳光模拟器在汽车智能玻璃的运用
测试工具·汽车
西瓜程序猿2 天前
如何将纸质版礼薄转换为电子礼薄?可以使用记了么
测试工具·创业创新
123过去2 天前
crunch使用教程
linux·测试工具·安全
123过去2 天前
samdump2使用教程
linux·测试工具·安全
测试19982 天前
使用Python自动化生成接口测试用例
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·接口测试
lifewange2 天前
postman接口自动化如何进行参数化
数据库·自动化·postman
妖萌妹儿3 天前
postman怎么做参数化批量测试,测试不同输入组合
开发语言·javascript·postman
lifewange3 天前
Cypress是什么
测试工具
川石课堂软件测试3 天前
涨薪技术|Prometheus使用Recoding Rules优化性能
功能测试·测试工具·jmeter·mysql·面试·单元测试·prometheus