当前位置: 首页 > news >正文

Postman接口测试全套流程

1.登录Postman

小编使用的是github账号登录,在登录选项直接选择自己的github账号登录进去即可,有登录问题可以去别的文章查看,在这里就不细说了。

旧版的Postman登录后的页面:

2.1创建集合(存放接口)

点击左上角collection集合,点击“+”创建一个新的集合,给集合命名并在下方加入备注,例如我测的是宠物商店接口测试,我加入的描述就是“一个宠物商店Pet_Store_Project接口测试”,添加后系统会自动保存,后续想要修改集合名字直接点击集合后边的“...”,点击rename即可修改。

2.2创建新的接口请求

点击集合下方蓝色字体的Add a request,得到一个新的请求

我使用的接口测试网站是https://petstore.swagger.io/#/pet/getPetById

我们本次测试用到的是截图中两个接口样例

先这个网站里创建一个宠物PetID,修改ID和Name信息为我们自己的,点击execute,成功post(返回值为200),这样可以确保我们得到一个可以调用的URL

可以看到URL就是我们在Postman里做Post请求输入的URL(这里记得复制出来),返回值200证明这个post已经成功发送并且得到自定义的信息。

接着再拿到一个get请求,在get请求中输入我们刚创建好的ID=111,运行后返回值200表示成功收到Post的信息,并复制这个URL。

2.3在Postman中测试

2.3.1GET接口测试

添加一个新的请求,左侧方式选择GET,将上面的URL复制进来,在Headers里新建一个过滤条件,在Key中填写Accept,Value中填写application/json,注意这个一定要设置好,我们GET请求的是json信息,不设置运行出来的数据无法成功获取到json的数据信息,会出现类似“UTF-8”报错。

设置完成点击send,顺利的话会看到下方Body出现我们在上面网站中设置的数据信息。

2.3.2POST接口测试

可以沿用GET中的URL,向GET发送请求,新建一个请求,左侧设置为POST,URL复制GET接口中的,将GET中得到的Body信息复制到POST的Body下面,设置headers条件过滤,点击send会看到下面信息和GET中一致,这证明接口测试成功了!

当然我们可以通过需改POST中ID和Name值继续向send,再从GET中接收信息,会得到新的用例

2.3.3变量参数化

原来的URL,我们写的是https://petstore.swagger.io/v2,在get 和POST中这往往过长,不方便在不同环境间切换,可以在环境中添加配置解决,将我们默认长度的部分填入initial Value 中,这样URL就变成{{url}}/...

我对这个接口测试单独设置了环境名称是Pet_Project,我在这里添加URL,只使用在这个环境中,如果在全局使用可以在下方的globals设置。

设置的配置环境切换到Pet_Project注意新的URL要用两层{{URL}},在后面加上GET和POST接口剩下的内容,点击send可以得到之前设置的同样的数据。

2.3.4 接口关联与动态化

目前我们设置的ID是手动修改两个接口,在测试样例增加会不方便,为了便于做ID修改,可以在POST接口将ID单独提取出,存入环境变量pet_id,以后GET接口刷新就能的得到数据。

首先打开POST请求,点击Tests标签页,在右侧代码区,输入以下代码:

// 1. 将服务器返回的 JSON 响应解析为对象 var jsonData = pm.response.json(); // 2. 从响应中提取 id,并存入名为 "pet_id" 的环境变量 pm.environment.set("pet_id", jsonData.id); // 3. (可选) 在控制台打印出来看看,方便调试 console.log("成功提取到的宠物ID是: " + jsonData.id);

在GET和POST请求的URL末尾去掉写死的/111,GET接口修改后{{url}}/pet/{{pet_id}},POST接口修改为{{url}}/pet,在环境配置也加入pet_id,具体步骤和设置URL一样。

接着需要同一变量位置,在POST的tests中加入代码:

pm.globals.set("pet_id", jsonData.id);

最后点击send运行。

这里加入速记函数的知识:为了方便我们达到“一次编写,多次运行”做到让POST自动更新ID,将POST Body里的ID改成"id": {{$randomInt}},这样 Postman 每次发送时都会随机生成一个 1 到 1000 的数字,真正实现“全自动测试”。

接着加入动态断言:

var expectedId = pm.environment.get("pet_id"); pm.test("返回的ID应与创建时一致", function () { pm.expect(jsonData.id).to.eql(Number(expectedId)); });

运行出的结果中可以看到随机生成数字101,并且查看断言结果都pass

那既然GET接口获取的随机数数101,证明此时POST函数生成的是101,也就是pet_id=101,我们查看环境变量里的pet_id验证猜想:

可以看到环境变量此时是101 ,这证明随机数测试成功。

3.1Newman的使用

3.1.1Newman是什么?

Newman可以理解为Postman的终端形式,Postman是UI界面形式进行测试,Newman是将文件在命令行进行测试

3.2 Newman的下载:

在终端输入

npm install -g newman

3.3Newman的使用

方法一:本地下载

首先需要将Postman中集合文件下载到本地文件夹中

点击collection旁边的三个点“...”,点击export,在页面中选择collection v2.1,点击export,选择一个简单的文件地址保存,保存后的文件是json格式。

接着需要保存运行文件的环境,在左侧选择environment,和上面操作一样点击export导出json格式的文件,这里建议将集合文件和环境文件放在一个目录下,在终端方便运行。

在终端输入运行代码:

newman run 你的集合名.json -e 你的环境名.json

运行成功截图:

方法二(更推荐):share Link运行

用链接跑的好处是:只要你在 Postman 里点了Save,链接里的内容会实时更新,Newman 跑的就是最新的代码,不需要反复手动导出文件了!

首先(最关键的一步):确保Postman中已经保存修改

检查POST接口:Tests里的pm.environment.set("pet_id", jsonData.id);代码还在;检查GET接口:URL 已经改为{{url}}/pet/{{pet_id}};关键点:确保两个接口上方的 Tab 标签页没有“小圆点”(有圆点表示没保存),请按Ctrl + S全部保存。

接着,在左侧找到集合后面的...进入share,选择Via JSON link或Via API,第一次使用需要建一个Key,复制API

打开终端,切换到创建Newman的文件夹下,

newman run "你复制的Postman_Link" -e 环境文件名.json

运行后界面和上一个方法的一样

4.1 HTML可视化报告生成

HTML报告时网页版UI界面的测试报告,比终端报告强大的多,包含:

  • Dashboard(仪表盘):直观展示通过率、失败率、总耗时。

  • Total Requests:每一个接口请求的完整细节

    • 即使 Newman 跑完了,你依然可以在报告里看到发出的 Body 是什么、收到的 Response 是什么。

    • Failed Tests:如果有失败,它会用醒目的红色标出来,并给出失败的原因(比如断言错误)。

下载插件:

npm install -g newman-reporter-htmlextra

终端输入:

newman run "你的API链接" -e 环境文件名.json -r htmlextra

运行完会发现本地文件Postman文件下多一个叫Newman的文件夹,点进去看到一个后缀名.html文件,双击用浏览器打开,得到报告

至此,一个完整的接口自动化测试流程就全部结束了!

总结测试流程:接口测试基础->接口关联与动态化->命令行自动化->调试与 Bug 排查->可视化报告

接下来的内容是扩展加强篇

5.1模拟外部依赖

在一些后端开发或者第三方接口不稳定导致自动化脚本跑不通,就需要通过写脚本或Postman等工作创建一个临时的服务器来接收并返回JSON数据,我们把这个称为Mock Server。

5.1.1创建MockServer实例

在postman左侧点击Mock Server,添加一个Mock服务器

基本信息:Method:GET或POST Request Path:/pet/mock Response Code:200

Response Body :{"id": 999, "name": "Mock_Cat", "status": "available"}

给Mock起个名字

5.1.2获取并配置Mock URL

复制Mock的URL,进入环境变量,添加新的Mock_URL变量

5.1.3设置响应示例

1、Mock Server 之所以能返回数据,是因为它匹配了你定义的Example

定位到具体的 Request:点击左上角collection,选择你想要添加Mock的请求接口,将类型改成GET,URL输入配置好的环境变量 {{url}}/pet,点击后面的“...”,选择Add example,这时可以看到原有的请求下多了一个带“e”图标的子项就是Example 编辑界面。然后在Body中写入“假”数据,在页面右下方“status code”值输入“200 OK”,最后点击save。

2、最后回到请求页面点击send,可以在控制台得到返回值200的成功结果

    http://www.jsqmd.com/news/624870/

    相关文章:

  1. Graphormer开源模型部署手册:Supervisor开机自启+日志监控全配置
  2. 基于单片机智能燃气灶控制系统设计
  3. nli-distilroberta-base企业应用:知识图谱三元组有效性自动验证
  4. 戴尔笔记本风扇终极控制指南:简单三步实现精准散热管理
  5. CCS12.2生成DSP28335的.bin文件,解决‘C:’不是命令的报错(保姆级避坑)
  6. 【PCL2】PCL2官网下载:PCL2启动器我的世界模组管理工具使用全攻略 - xiema
  7. JetBrains IDE试用期重置终极指南:如何免费延长30天开发工具使用期限
  8. 【AI原生UX设计反直觉真相】:为什么“更智能”反而导致用户流失率上升47%?——基于127个A/B测试的归因分析
  9. 技术领域驱动设计的建模方法
  10. 兰亭妙微移动端设计案例库:Web3、心理健康、B端营销等六大场景的交互逻辑与视觉表达 - ui设计公司兰亭妙微
  11. Linux驱动SDIO1
  12. 突发!裁撤全部中国区研发团队,涉 500 人
  13. GoCodingInMyWay腺
  14. 单链表专题(完整代码版)
  15. python学习-05列表
  16. “键盘鼠标”到“听懂人话”:如何用AI语音重构大屏交互新范式?
  17. Bidili Generator开源大模型:基于Stable Diffusion XL 1.0的完全本地化方案
  18. 告别音效制作烦恼:HunyuanVideo-Foley私有部署镜像实测,效果惊艳
  19. STGCN实战:从骨架数据到动作识别的时空建模
  20. 为什么你需要PS3GameUpdateDownloader?3步掌握索尼官方游戏更新下载
  21. PKHeX自动合法性插件:轻松创建合规宝可梦的智能助手
  22. FX3U_F407_V50 底层源码功能说明文档
  23. ReadCat小说阅读器:打造纯净无干扰的完整阅读体验指南
  24. 医疗图像降噪实战:用VS2026+QT6.9+OpenCV处理X光RAW图,从对齐到超分全流程避坑
  25. Pixeval:为Pixiv用户打造的现代化内容管理解决方案
  26. 技术人的产品思维培养
  27. 收藏!行业寒冬下,程序员薪资翻倍的秘密的是大模型(小白必看)
  28. ROS2机器人建模避坑:左右轮坐标轴搞反,Gazebo转向和RViz2建图全乱了
  29. Python剪映自动化实战:基于JianYingApi的第三方剪映API深度架构指南
  30. 低成本Wi-Fi/蓝牙天线DIY实战:用FR4板与HFSS设计2.45GHz侧馈微带天线