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

2023-11-06

目录

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。

总结:

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

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

                                                      

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

接口测试工具——Postman使用详解 的相关文章

  • 如何在邮递员中以@RequestPart形式发送数据

    我刚刚加入一个新项目 但在创建控制器中具有 RequestPart 注释的对象时遇到问题 Here are images of the model 这是控制器 和服务 我应该如何发送创建可交付对象的请求 我尝试了几种方法 但总是出现错误 请
  • 帖子中的 req.body 为空

    突然之间 我的所有项目都发生了这种情况 每当我使用express和body parser在nodejs中发帖时req body是一个空对象 var express require express var bodyParser require
  • Corona/Box2D 检测与非移动静态物体的碰撞

    出于发帖原因 这是我正在尝试做的事情的简单版本 在屏幕上我有一个简单的圆形对象 它是静态的并且不会移动 然后用户可以拖放一条直线 如果该线穿过该圆圈 我希望触发碰撞事件 看来除非其中一个物体正在移动 否则永远不会检测到碰撞 绘制线条时能否检
  • 如何在多个Lua State(多线程)之间传递数据?

    我在中启动Redis连接池redis lua 通过从 C 调用 我得到了redis lua state 此 Lua 状态全局启动一次 仅在其他线程中启动get从中 当有一个 HTTP 请求 工作线程 时 我需要从redis lua stat
  • MS Teams 获取名册返回“机器人不属于对话名册”。

    我正在尝试获取 MS Teams 烘焙机 用户配置文件 以下是我拨打的 Postman 电话的顺序 生成的访问令牌 https login microsoftonline com botframework com oauth2 v2 0 t
  • 循环直到在表中找到 2 个特定值?

    我试图找到一种更聪明的方法来解决这个问题 这是与游戏相关的代码的摘录 它循环遍历每个背包的每个插槽 直到找到铲子和绳子 local continue local foundShovel foundRope for i 0 Container
  • Lua 中的内联条件(a == b ? "yes" : "no")?

    无论如何 Lua 中可以使用内联条件吗 Such as print blah a true blah nahblah Sure print blah a and blah or nahblah
  • AWS CLI - 如何为认知用户生成安全令牌

    最终 我需要为 Cognito 用户池中的用户生成 AccessKeyId SecurityKey 和 SessionToken 以便我可以使用 Postman 作为 Cognito 用户测试 lambda 函数 到目前为止 我已经花了两天
  • 检查lua中是否存在目录?

    如何检查 lua 中是否存在目录 如果可能的话最好不使用 LuaFileSystem 模块 尝试做类似以下 python 行的事情 os path isdir path 这是一种在 Unix 和 Windows 上都适用的方式 无需任何外部
  • corona sdk中拖动物理对象

    我尝试在场景中拖动重力 0 0 的动态主体 我有一个主体类型为动态的正方形 以及一个主体类型为静态的图像 但是当将方形拖动到图像上时 它会产生一点力 但是可以超出图像并传递到另一边 如图所示 这是我拖动正方形的代码 local functi
  • lua_resume 的 from 参数的含义

    From Lua 5 2 参考手册 http www lua org manual 5 2 manual html lua resume int lua resume lua State L lua State from int nargs
  • Next.js API 路由神秘地修改 JSON 负载

    由于某种原因 当我通过 Postman 作为原始文本发送 JSON 格式的数据时 没有任何问题 当我通过 Postman 发送与原始 JSON 完全相同的数据时 区别应该只是content type标头是application json代替
  • 什么时候适合使用Lua这样的嵌入式脚本语言

    我玩 魔兽世界 大约有两年了 我对用来编写插件的 Lua 很好奇 由于到目前为止我读到的有关 Lua 的内容都是 快 轻 和 这太棒了 所以我想知道如何以及何时使用它 您需要在系统中嵌入像 Lua 这样的脚本语言的典型情况是什么 当您需要最
  • 用于多部分/表单数据的 POSTMAN

    如何将 POSTMAN 用于 Multipart form data 它具有自定义标头来测试我的控制器 该控制器采用 2 个文件作为参数 public controller MultipartFile files POST HTTP 1 1
  • Lua userdata:无法同时进行数组访问和方法

    我遇到了这个人的问题 Lua userdata数组访问及方法 https stackoverflow com questions 26970316 lua userdata array access and methods 其中 当我设置用
  • 尝试将 nil 与数字堆栈回溯进行比较?

    我正在通过以下链接玩 Lua https www lua org pil 4 2 html https www lua org pil 4 2 html并对某一点感到困惑 Lua 5 2 4 Copyright C 1994 2015 Lu
  • 使用 FastCGI 运行 Lua 脚本

    我目前正在尝试找出使用 FastCGI 与 lighttpd 或 Nginx 一起运行 Lua 脚本的方法 我唯一能挖到的是WSAPI http keplerproject github com wsapi 开普勒计划的一部分 但我想知道是
  • lua中的权限问题

    是否需要在 corona build settings 中设置一些特定权限才能将高分永久保存在文件中 每次运行代码时都会出现 权限被拒绝 的错误 如何纠正这个错误 这是我尝试过的代码 function read score local f1
  • 如何查看 Postman Collection Runner 中的回复?

    我正在使用 Postman Collection Runner 使用迭代多次运行相同的请求 我的测试按预期工作 但我无法看到每个请求的单独响应 是否可以在 Postman Collection Runner 中查看请求的响应 在最新版本的
  • 如何通过 C API 在自己的环境中执行不受信任的 Lua 文件

    我想通过调用在其自己的环境中执行不受信任的 lua 文件lua setfenv http pgl yoyo org luai i lua setfenv这样它就不会影响我的任何代码 该函数的文档仅解释了如何调用函数 而不解释如何执行文件 目

随机推荐

  • 如何在微信小程序中优雅地发送异步请求

    一 微信小程序运行环境 微信小程序的 javascript 运行环境和浏览器不同 页面的脚本逻辑是在JsCore中运行 JsCore是一个没有窗口对象的环境 所以不能在脚本中使用window 也无法在脚本中操作组件 JsCore中也没有 X
  • ProtoBuf(Google Protocol Buffers)—— C++开发具体教程

    ProtoBuf C 开发 教程 C 开发 教程 1 定义你的 protocol 格式 1 1 protocol 字段格式 1 2 指定字段规则 1 3 proto文件 2 编译你的 Protocol Buffers 3 The Proto
  • 【华为OJ】【在字符串中找出连续最长的数字串】

    题目描述 请一个在字符串中找出连续最长的数字串 并把这个串的长度返回 如果存在长度相同的连续数字串 返回最后一个连续数字串 注意 数字串只需要是数字组成的就可以 并不要求顺序 比如数字串 1234 的长度就小于数字串 1359055 如果没
  • 模板类的特化和类型萃取

    模板类的特化 有时为了需要 针对特定的类型 需要对模板进行特化 也就是所谓的特殊处理 全特化 对传入的数据类型都做了限制 偏特化 半特化 偏特化并不仅仅是指特殊部分参数 而是针对模板参数更进一步的条件限制所设计出来的一个特化版本 模板的全特
  • Linux vim的常见基本操作

    目录 vim是一款多模式的编辑器 命令模式下 用小写英文字母 h j k l 分别控制光标左 下 上 右移一格 gg 定位到代码第一行 n shift g 定位到任意一行 最后一行 移动到光标所在行的结尾 移动到光标所在行的开头 w 以单词
  • Linux之 Shell分析日志文件

    文章目录 前言 1 查看有多少个IP访问及某一个页面被访问的次数 2 查看每一个IP访问了多少个页面及个IP访问的页面数进行从小到大排序 3 查看某一个IP访问了哪些页面及去掉搜索引擎统计的页面 4 查看2015年8月16日14时这一个小时
  • React Hook的用法: Ref + useMemo + 自定义Hook(三)

    React Hook的用法 Ref Hook 这个Hook的作用是可以通过他来获取到Dom元素节点 使用起来非常方便 关键代码如下 const xxxEle useRef initialValue 1 useRef返回一个ref变量 并接受
  • U盘怎么重装系统到电脑上

    当今社会 电脑可以说是融入了我们的生活 每个工作职能都需要使用到电脑来录入信息 电脑既然这么重要 但还是偶然出现些小故障 我们都可以通过u盘来重装系统拯救电脑 更多系统教程尽在小白系统重装官网 1 注 准备好一个8g以上u盘 一台能上网的电
  • Blender里的三种绑定:(一)主从绑定

    文章目录 Blender里的三种绑定 主从绑定 进行物体绑定 进行顶点绑定 解除绑定 保持变换 无反向 进行晶格绑定 Blender里的三种绑定 1 Blender中一共有三种绑定模式 分别是 主从绑定 约束 骨骼 主从绑定 1 主从绑定即
  • python下载安装过程——超详细!

    Python 下载安装 文末附python全套学习资料 安装python分三个步骤 1 下载python 2 安装python 3 检查是否安装成功 1 下载Python 1 python下载地址https www python org d
  • python使用pycrawlers批量下载huggingface上的模型与数据文件

    文章目录 前言 一 git下载的例子 二 pycrawlers的使用 1 安装 2 批量下载 3 单个下载 4 示例 5 后台下载 6 断点续传 总结 前言 现在从下载huggingface的文件一般使用git 下载单个小型模型的文件使用g
  • Linux系统管理:虚拟机Alpine Linux安装

    目录 一 理论 1 Alpine Linux 二 实验 1 Alpine Linux安装 三 问题 1 Alpine Linux 缺少VIM命令 2 Alpine Linux SSH连接不上 3 Alpine Linux IP配置 四 总结
  • Python3实现向指定邮箱发送邮件(支持附件文件、图片等)

    Background 最近业务需求需要把生成的月报定时发送到指定邮箱 直接在网上找了相关经验改巴改巴给实现了 测试可以直接使用 生产是我从MySQL数据库获取文件信息和邮箱等使用的 程序中的注释相当清楚了 定时是通过shell脚本实现的 获
  • python应用(3)svm模型预测股票涨跌

    最近接了一个私活 指导学妹完成毕业设计 核心思想就是利用SVM模型来预测股票涨跌 并完成策略构建 自动化选择最优秀的股票进行资产配置 在做这个项目的过程中 我体会到想成为一个合格的数据分析或者数据挖掘工程师不仅技术要过关 还需要了解所要挖掘
  • kubernetes搭建GitLab并提供本地域名服务及业务微服务接口集成GitLab

    目录 搭建GitLab服务 镜像准备 数据卷脚本 部署脚本 服务脚本 路由脚本 登录及配置 GitLab接口及业务微服务上传代码 GitLab接口注意事项 业务微服务上传代码注意事项 搭建GitLab服务 业务管理平台需要将本地的代码上传并
  • mysql中alter 添加字段,添加默认值,删除字段,删除默认值

    需求 为已有添加字段 示例 1 查看先有表结构 2 为t test表添加字段nickname 语法 ALTER TABLE 表名 ADD 字段名字段类型 ALTER TABLE t test ADD nickname varchar 25
  • 用jmeter进行http接口测试详解

    前言 本文主要针对http接口进行测试 使用Jmeter工具实现 Jmter工具设计之初是用于做性能测试的 它在实现对各种接口的调用方面已经做的比较成熟 因此 本次直接使用Jmeter工具来完成对Http接口的测试 同时 我也为大家准备了一
  • KY275 对称平方数

    KY275 对称平方数 for i in range 1 256 square str i i if square square 1 print i
  • 批量执行定时任务_执行批量维护任务安全策略

    批量执行定时任务 介绍 Introduction You may see it more commonly referenced as Database Instance File Initialization DIFI If you ar
  • 接口测试工具——Postman使用详解

    目录 Postman简介 Postman主界面 菜单栏 工具栏 请求管理区 环境管理区 请求设计区 发送请求 发送GET请求 Postman发送GET请求 发送表单格式POST请求 发送JSON格式POST请求 发送XML格式POST请求