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

总结:

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

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

软件测试面试文档

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

视频文档获取方式:

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

相关推荐
Tipriest_3 小时前
【前端扫盲】postman介绍及使用
前端·测试工具·postman
weixin_438732104 小时前
Selenium 中 expected_conditions 模块详解:提升 Web 自动化测试效率的得力助手
selenium·测试工具
niuniu_6661 天前
简单的自动化场景(以 Chrome 浏览器 为例)
运维·chrome·python·selenium·测试工具·自动化·安全性测试
niuniu_6662 天前
Selenium 性能测试指南
selenium·测试工具·单元测试·测试·安全性测试
莓事哒2 天前
selenium和pytessarct提取古诗文网的验证码(python爬虫)
爬虫·python·selenium·测试工具·pycharm
软件测试曦曦2 天前
如何使用Python自动化测试工具Selenium进行网页自动化?
自动化测试·软件测试·python·功能测试·测试工具·程序人生·自动化
互联网杂货铺2 天前
黑盒测试、白盒测试、集成测试和系统测试的区别与联系
自动化测试·软件测试·python·功能测试·测试工具·单元测试·集成测试
Feng.Lee3 天前
聊一聊缓存如何进行测试
功能测试·测试工具·缓存
爱学测试的雨果3 天前
Postman —— postman实现参数化
软件测试·功能测试·测试工具·lua·postman
互联网杂货铺3 天前
如何用Postman实现自动化测试?
自动化测试·软件测试·python·测试工具·测试用例·接口测试·postman