使用 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 指令即可。

总结:

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

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

软件测试面试文档

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

视频文档获取方式:

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

相关推荐
爱学习的潇潇4 小时前
Postman学习之常用断言
自动化测试·软件测试·功能测试·学习·程序人生·lua·postman
程序员雷叔4 小时前
在postman设置请求里带动态token,看看这两种方法!
selenium·测试工具·单元测试·测试用例·pytest·lua·postman
Hacker_xingchen4 小时前
如何用Postman做接口自动化测试及完美的可视化报告?
自动化测试·软件测试·测试工具·职场和发展·postman
AI软件工程实践4 小时前
软件工程里 Postman 的文件上传与下载测试技巧
测试工具·ai·lua·postman
恃宠而骄的佩奇6 小时前
APP客户端安全评估思路及工具分享
测试工具·安全·网络安全·app客户端安全评估
Wpa.wk18 小时前
性能测试 - 搭建线上的性能测试环境参考逻辑图
java·经验分享·测试工具·jmeter·性能测试
@汤圆酱21 小时前
Jmeter如何实现接口关联?
测试工具·jmeter
测试秃头怪1 天前
Python测试框架Pytest的参数化
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·pytest
小旭95271 天前
软件测试核心知识整合(ADB 命令 + Monkey 测试 + 测试流程与工具)
测试工具·adb·压力测试
Wpa.wk1 天前
性能测试 - 性能监控命令top,ps
java·经验分享·测试工具