接口测试工具——Postman使用详解

news2025/4/6 14:42:43

目录

Postman简介

Postman主界面

菜单栏

工具栏

请求管理区

环境管理区

请求设计区

发送请求

发送GET请求

Postman发送GET请求

发送表单格式POST请求

发送JSON格式POST请求

发送XML格式POST请求

发送文件上传类型的请求

响应

环境和变量

环境变量设置

环境变量使用

全局变量

测试脚本及断言

状态码断言

包含文本

JSON数据断言

运行测试

请求集

批量运行Collection Runner

总结:


Postman简介

Postman是一款简单方便的接口调试工具,便于分享和协作。具有接口调试、请求集管理、环境配置、参数化、断言、批量执行、请求录制、Mock Server,、接口文档、接口监控等功能。

Postman主界面

Postman主界面分为菜单栏、工具栏、请求管理区、环境管理区、请求设计区及状态栏等主要部分组成,如图2.13所示。

 

菜单栏

Postman菜单栏由File(文件)、Edit(编辑)、View(显示)和Help(帮助)4个主菜单组成。

工具栏

Postman的工具栏中是一些常用的工具按钮如新疆、导入、运行器等等。详细按钮及解释参考表2.4。

请求管理区

请求管理区位于Postman主体的左侧,用于查看保存的请求列表或请求历史。主要分为Collections接口集和History请求历史两种视图。
接口集,相当于一个接口项目或测试计划,接口集中可以建立无限极子文件夹,用于对接口进行分组管理。请求历史记录视图中可以查询到之前的请求记录。

环境管理区

环境管理区分位于Postman主体右侧请求设计区右上角。由一个环境选择下拉框,一个眼睛(预览)图标和一个环境设置图标组成。环境选择下拉框中可以切换不同的环境。环境预览按钮可以快速雨来环境中的所有变量设置。环境设置中可以添加修改环境变量以及全局变量。

注:什么是环境?

环境是一套配置,包含许多环境变量。在接口测试中,根据部署在不同的服务器上,服务器地址有可能不同,而同一个接口,接口地址是不变的。为了测试部署在不同服务器上的同一套接口,我们可以建立不同的环境,不同环境中host变量使用不同的地址。

请求设计区

请求设计区位于Postman右侧,是Postman的核心功能区。请求设计区上半部分为请求区,下半部分为响应区。可以通过上方的Tab选项卡边上的+好,新建多个请求面板,如图2.14所示。

请求区主要由请求地址行和请求数据区组成。
请求地址行中可以选择请求方法(GET/POST/...),填写请求地址,发送请求和保存请求到测试集。
请求数据区:分为授权,请求头,请求数据,请求发送前执行的脚本(用于准备数据),请求结束后执行的脚本(用于断言)。

请求设计区分为以下5个面板。

  • Params:URL参数。
  • Authorization:如果接口需要授权,可以在该页面设置授权方式(type)和授权信息。
  • Header:请求头,可以设置请求类型(Content-Type)和Cookie。
  • Body:请求数据。
  • Pre-request Script:请求前脚本,JavaScript语法,用于在发送请求前生成一些动态数据或做一些处理
  • Tests:请求后脚本,JavaScript语法,用于请求返回后做一些处理或断言结果

其中Body下主要包含以下4中格式。

  • form-data:混合表单,支持上传文件
  • x-www-form-urlencoded:文本表单
  • raw:原始格式,支持JSON/XML格式(后面可选择)
  • binary:二进制格式,用于发送二进制数据流

选择不同的格式,可以发送不同类型的请求数据。
响应区用于展示发送完请求,服务端的响应数据及状态,由Body响应体、Headers响应头、Cookie响应Cookies、Test Results测试结果4部分组成。
响应内容中可以以Pretty(美化格式)、Raw(原始格式)、Preview(HTML预览格式)等方式查看响应数据。测试结果用于显示请求中Tests中设置的断言的测试结果。

发送请求

发送GET请求

发送GET请求非常简单,请求方法使用默认GET,在地址栏中填入接口地址,点击发送即可,如图2.15所示。

Postman发送GET请求

请求URL参数可以直接写在URL中,也可以通过Params选项卡中的表格填写,参数会自动同步到URL中。

注:如果请求需要登录,可以先在Postman其他Tab页的请求中发送登录接口进行登录(Postman会保存登录的Cookies),然后再发送该GET请求。或者抓取登录后的Cookies,填写到该GET请求的Header中。

发送表单格式POST请求

表单格式的非常常见的一种网页表单提交的格式。对应的内容类型为application/x-www-form-urlencoded。参数数据经过URL编码后发送。
在Postman中发送表单格式的数据,首先要在地址行中选择POST方法,填写接口地址,选择下方的Body(请求体)子选项卡,选择x-www-form-urlencoded格式,在表格中填入参数数据,点击Send发送即可。如图2.17所示。

 

注:在选择x-www-form-urlencoded格式后,Postman会自动在请求头中添加对应的内容类型项,Content-Type: application/x-www-form-urlencoded。

发送JSON格式POST请求

JSON格式属于raw原始格式(即不经过编码原样发送)中的一种。发送JSON格式请求,首先选择POST请求方法,填写接口地址,选择Body请求体,选择raw,在右侧的下拉选项中选择JSON(application/json)。在下方输入JSON格式的请求数据,点击发送即可,如图2.18所示。

注:输入的JSON数据要符合JSON语法格式,只能用双引号,不能用单引号,不支持注释等。如果格式错误,对应行数字后会有相应的x号标记。
在选择完raw->JSON(application/json)后,Postman会自动在请求头中添加内容类型声明Content-Type: application/json。

发送XML格式POST请求

XML格式的请求同样属于raw原始格式的一种。选择POST请求方法,填写接口地址,选择Body请求体,选择raw,在右侧的下拉菜单中选择XML,application/xml或text/xml均可。如图2.19所示。


同样,在选择为XML格式后Postman会在请求头中添加对应的内容类型声明。

发送文件上传类型的请求

文件上传请求一般采用multipart/form-data混合表单格式。每个文件同样对应一个参数变量。在Postman里Body请求体重选择form-data格式,填写对应的参数变量,点击该参数单元格右侧的下拉小箭头中选择File(文件),在后面的单元格中点击选择文件即可。如果2.20所示。

如果需要上传多个文件,填写多个变量即可,也可以填写普通Text(文本)变量。

响应

在编辑完请求后点击发送即可收到响应。响应区分为Body响应体、Cookies响应Cookies、Headers响应头和Test Results测试结果。右侧还包含Status状态码、Time响应时间和Size数据大小三组数据。
响应数据可以使用Pretty美化格式(通常用于JSON或XML格式的响应数据)、Raw原始格式和Preview预览格式(一般用于预览HTML网页),后面还可以设定数据的格式来进行Pretty美化展示。
换行图标可以将单行的响应数据按树状格式多行显示。右侧为复制、字段搜索和Save Response保存响应3个按钮。如图2.20。

 

环境和变量

变量用于对请求数据进行参数化。环境则为一套变量配置。通过在请求中使用参数化变量,加上切换环境可以快速批量改变请求中的某些参数值,如base_url接口地址。

环境变量设置

点击环境管理区的环境设置图标,可以打开环境管理对话框,点击添加按钮或已存在的环境名可以新建或修改环境。如图2.21所示。

环境变量使用

在环境选择下拉框选择指定环境,在请求URL或者请求Body里使用{{变量名}}来使用指定的环境变量。如图2.22所示。

变量可以在请求Body的各种格式中使用,但不能直接在请求前脚本(Pre-request Script)和请求后脚本(Tests)中使用。

全局变量

环境管理中还可以点击“GLOBAL”按钮添加全局变量.环境变量只有当选择了该环境时生效,全局变量在任何环境中生效。如果全局变量和环境变量名有重复,环境变量的优先级大于全局变量。

注:测试集Collection中也有Variables集合变量,只对保存在当前Collection中的请求生效。三种变量的优先级关系为环境变量>全局变量>集合变量。

测试脚本及断言

断言是指预期结果与实际结果的对比。包含断言的请求才能称得上是完整的测试用例。
Postman每个请求中都包含一个Tests选项卡,称为测试脚本,在收到响应后执行。在Tests测试脚本中可以对响应数据进行提取并添加断言。
Tests脚本区右侧会提供很多常用的SNIPPETS代码段,只要点击对应的代码段即可快速实现指定的功能或断言。

状态码断言

状态码断言是最基本的断言之一,可以用于断言响应是否成功返回(状态码200)。
切换到请求的Tests测试脚本面板,在右侧SNIPPETS代码段中找到Status code: Code is 200并点击。Tests脚本中会出现以下代码。

pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);
});

其中Status code is 200是该断言的标题,pm.response.to.have.status(200);是具体的断言语句,如果要断言其他状态码可以修改括号中的200为对应的状态码。

包含文本

Tests脚本中可以添加多条断言。要断言响应文本在代码段中点击Response body: Contains string,Tests脚本中会出现以下代码。

pm.test("Body matches string", function () {
    pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});

修改include括号中为实际应包含的字符串即可。

JSON数据断言

JSON数据断言要先将文本格式的请求数据转换为JSON对象,然后根据JSON机构提取对应的字段进行对比。
在代码段中点击Response body: JSON value check。Tests脚本中会出现以下代码段。

pm.test("Your test name", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.value).to.eql(100);
});

var jsonData = pm.response.json();是将请求体数据转换为JSON对象赋给jsonData变量。pm.expect(jsonData.value).to.eql(100);为从JSON数据中提取第一级的value值请判断是否等于100。这里要修改value为对应要提取的字段,100改为对应的值。多个字段的断言可以写多个相同结构的断言,也可以写到同一个断言中使用多条pm.expect(jsonData.字段名).to.eql(期望值);语句。多层字段使用点来逐级提取。

运行测试

在请求Tests添加完断言后,点击发送,在响应的Test Results处就可以看到各条断言的结果。

请求集

对应常用的请求我们可以保存到Collection请求集中。点击请求右侧的Save按钮或按Ctrl+S即可弹出保存请求的对话框,输入请求名称,选择Collection集合点击保存即可。
Collection请求集用于组织和管理请求,Collection可以视为一个顶级的测试套件或测试计划。Collection中可以建立多层Folder子文件夹,来对请求进行分组管理。
Collection是Postman中接口管理的一个“整体”单位,运行、导出、分享等都是基于测试集的。
点击工具栏New按钮,选择Collection或者直接点击测试集列表上方的New Collection按钮即可弹出新建Collection界面。如图2.23所示。

Collection请求集包含名称、Description描述、Authorization授权、Pre-request Scripts请求前脚本、Tests测试脚本和Variables集合变量几部分组成。
在已存在的请求集上点击右侧的...按钮还可以对该请求集进行编辑、Add Folder建立子文件夹或进导出等其他操作。

批量运行Collection Runner

点击工具栏的Runner按钮或Collection右侧的三角按钮可以打开Collection Runner集合运行器窗口。集合运行器可以批量运行一个Collection或Folder中的所有请求。并根据请求中的断言信息判断请求通过与否。同时Collection Runner还支持设置迭代次数以及使用CSV或JSON文件进行数据驱动。
以下为使用Collection Runner及CSV文件进行数据驱动的一个完整示例。

  • (1) 新建一个Collection,比如名称Demo2
  • (2) 新建请求,填入URL:

Body请求数据格式选x-www-form-urlencoded,请求数据填写username {{username}} password {{password}},这里使用了两个变量来做参数化,然后在请求Tests中添加状态码断言。然后保存请求到Demo2中。如图2.24所示。

 

 

  • (3) 使用数据文件。在电脑上新建一个data.csv文件,第一行为变量名,下面是数据,如图2.25所示。

其中标题行变量名要与请求中参数化的变量名一致。

  • (4) 打开Collection Runner,选择请求集Demo2,点击Select File选择data.csv数据文件,点Run Demo2运行请求集。如图2.26所示

-(5)运行完成后即可查看报告,如图2.27所示。

在测试报告页可以对报告进行Export Results导出、Retry重跑或New运行新的Collection。

总结:

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

我个人整理了我这几年软件测试生涯整理的一些技术资料,包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。欢迎大家点击下方名片免费领取,千万不要错过哦。

                                                      

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/763821.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Ceph的介绍】

目录 1、存储基础1、单机存储设备2、单机存储的问题3、商业存储解决方案4、分布式存储(软件定义的存储 SDS)1、分布式存储的类型 2、Ceph 简介3、Ceph 优势4、Ceph 架构5、Ceph 核心组件1、Pool中数据保存方式支持两种类型2、Pool、PG 和 OSD 的关系 6、…

测试用例设计方法-场景法详解

01、定义 场景法是通过运用场景来对系统的功能点或业务流程的描述,从而提高测试效果的一种方法。 场景法一般包含基本流和备用流,从一个流程开始,通过描述经过的路径来确定的过程,经过遍历所有的基本流和备用流来完成整个场景。…

SOPC之NiosⅡ系统(四)

NIOS Ⅱ系统实例,参考自特权同学《勇敢的芯-伴你玩转NIOS Ⅱ》 一些基础操作就不再赘述 目录 1.创建Quartus项目 1.2 进入Platform Designer添加组件并设置 1.2.1 设置时钟频率50MHz; 1.2.2 添加Nios Ⅱ组件 1.2.3 添加RAM组件 1.2.4 设置Nios Ⅱ…

【每日随笔】摩托车安全驾驶 ① ( 摩托车骑行准备 | 买好保险 | 摩托车必要改装 - 护杠 + 行车记录仪 | 骑行护具 )

文章目录 一、摩托车骑行准备1、买好保险2、摩托车必要改装 - 护杠 行车记录仪3、骑行护具 德州考驾照归来 , 提了一辆 铃木 UY125 , 注意安全驾驶 , 以后上班就骑摩托车了 ; 由于居住证上的地址是海淀区 , 目前住在学院路 , 导致无法把车落户到自己名下 , 只能上公户了 ; 车…

G1垃圾收集器-JVM(十三)

上篇文章说了CMS垃圾收集器使用以及三色标记如何解决cms的一些问题。分别有初始标记,并发标记,重新标记,并发清理,并发重置。 CMS垃圾收集器&三色标记-JVM(十二) G1收集器(Garbage-First&a…

浅析缓存一致性的解析方案

各位同学们平时开发的时候除了使用到数据库(这里以mysql为例)还会用到相关的缓存(这里以redis为例)操作。 举一个常用的场景当我们写的接口性能相对比较慢的时候(高并发场景需要响应速度很快)为了保证性能的…

LeetCode144. 二叉树的前序遍历

144. 二叉树的前序遍历 文章目录 [144. 二叉树的前序遍历](https://leetcode.cn/problems/binary-tree-preorder-traversal/)一、题目二、思路及代码(1)递归(2)迭代(两种方法) 一、题目 给你二叉树的根节点…

AlienSwap 首期 Launchpad — 偶像女团 NFT+RWA 的创新探索

NFT 是整个加密市场一致看好,并认为会继续爆发的领域。随着更多的 NFT 平台和 NFT 项目的推出,NFT 市场的格局也在不断变化。从开始的 OpenSea 占据绝对领先地位,到 Blur 的横空出世风头无两,在加密领域,局势更迭总是在…

【Java面试丨并发编程】线程中并发安全

一、Synchronized关键字的底层原理 1. Synchronized的作用 Synchronized【对象锁】采用互斥的方式让同一时刻至多只有一个线程能持有【对象锁】,其他线程再想获取这个【对象锁】时就会阻塞住 2. Monitor Synchronized【对象锁】底层是由Monitor实现,…

泰裤辣!这是什么操作,自动埋点,还能传参?

目录 前言 参数放在注释中 准备入口文件 编写插件 运行代码 完整代码 参数放在局部作用域中 准备源代码 编写插件 运行代码 完整代码 总结 前言 在上篇文章讲了如何通过手写babel插件自动给函数埋点之后,就有同学问我,自动插入埋点的函数怎么…

基于IMX6ULL的AP3216C的QT动态数据曲线图显示

前言:本文为手把手教学 LinuxQT 的典型基础项目 AP3216C 的数据折线图显示,项目使用正点原子的 IMX6ULL 阿尔法( Cortex-A7 系列)开发板。项目需要实现 AP3216C 在 Linux 系统下的驱动,使用 QT 设计 AP3216C 的数据显示页面作为项目的应用层。…

消息中间件RabbitMQ简介

1.1消息队列中间件简介 消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题实现高性能,高可用,可伸缩和最终一致性[架构] 使用较多的消息队列有ActiveMQ,RabbitMQ&#xff…

人工智能安全风险:零信任的作用

人工智能(AI)和机器学习技术飞速发展,我们所处的时代正在经历前所未有的创新。但是,技术飞速发展的同时也带来了各种挑战。人工智能技术越来越复杂,与之相关的网络安全风险也越来越棘手,随之产生了一个新的…

TortoiseGit 入门指南10:贮藏

有时,当你在项目的一部分上已经工作一段时间后,所有东西都进入了混乱的状态, 而这时你想要切换到另一个分支做一点别的事情。 问题是,你不想仅仅因为过会儿回到这一点而为做了一半的工作创建一次提交。 针对这个问题的答案是贮藏 …

【Linux指令集】---unzip指令(超详细)

个人主页:平行线也会相交 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【Linux专栏】🎈 本专栏旨在分享学习Linux的一点学习心得,欢迎大家在评论区讨论💌 演示环境&#xff1…

JVM系统优化实践(19):GC生产环境案例(二)

您好,这里是「码农镖局」CSDN博客,欢迎您来,欢迎您再来~ 接昨天的问题继续来说,在高并发场景中,对象过多容易导致OOM。由于高并发导致Young GC存活对象过多,因此会有太多对象进入老年代&#xf…

关于unity Content Size Fitter 套 Content Size Fitter

首先:最好不要unity Content Size Fitter 套 Content Size Fitter 这样最后得到的变化可能会错误 unity也提示了,父物体如果有了,那么子物体就不要再加了。 但是你们要的需求: 一级父物体 ➡自适应大小➡二级父物体&#xff08…

经典目标检测R-CNN系列(2)Fast R-CNN

经典目标检测R-CNN系列(2)Fast R-CNN Fast R-CNN是作者Ross Girshick继R-CNN后的又一力作。 同样使用VGG16作为网络的backbone,与R-CNN相比训练时间快9倍,测试推理时间快213倍,准确率从62%提升至66%(Pascal VOC数据集上)。 1 Fast R-CNN的…

Java List 与数组互转

前言 略 数组转 List 方法1 Employee[] array new Employee[]{emp1, emp2, emp3}; List<Employee> list Arrays.asList(array);Arrays.asList 返回的是固定长度的数组&#xff0c;扩大或缩小列表的操作将返回UnsupportedOperationException。 数组转 List 方法2 E…

【C++STL】“vector“容器的模拟实现

vector的模拟实现 模拟实现成员变量构造函数无参构造函数初始化n个val的构造函数迭代器区间构造函数 拷贝构造析构函数begin&#xff08;&#xff09;end&#xff08;&#xff09;swap&#xff08;&#xff09;reserve()resize()capacity()size()重载[]运算符重载赋值运算符ins…