postman使用教程

2023-05-16

Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件

市场上有很多优秀的,完善的接口测试工具,比如SoapUI,Postman,JMeter、yapi等,能够高效的帮助后端开发人员独立进行接口测试。这里使用Postman接口测试工具,分别介绍如何对GET请求和POST请求进行接口测试。

Postman背景介绍

用户在开发或者调试网络程序或者是网页B/S模式的程序的时候是需要一些方法来跟踪网页请求的,用户可以使用一些网络的监视工具比如著名的Firebug等网页调试工具。今天给大家介绍的这款网页调试工具不仅可以调试简单的css、html、脚本等简单的网页基本信息,它还可以发送几乎所有类型的HTTP请求!Postman在发送网络HTTP请求方面可以说是Chrome插件类产品中的代表产品之一。

Postman是一个接口测试工具,在做接口测试的时候,Postman相当于一个客户端,它可以模拟用户发起的各类HTTP请求,将请求数据发送至服务端,获取对应的响应结果,

从而验证响应中的结果数据是否和预期值相匹配;并确保开发人员能够及时处理接口中的bug,进而保证产品上线之后的稳定性和安全性。

它主要是用来模拟各种HTTP请求的(如:get/post/delete/put..等等),Postman与浏览器的区别在于有的浏览器不能输出Json格式,而Postman更直观接口返回的结果。

Postman的操作环境

postman适用于不同的操作系统,Postman Mac、Windows X32、Windows X64、Linux系统,还支持postman 浏览器扩展程序、postman chrome应用程序等。

Postman的界面图

Postman的各个功能区

快捷区: 快捷区提供常用的操作入口,包括运行收藏夹的一组测试数据,导入别人共享的收藏夹测试数据(Import from file, Import from folder, Import from link等),或新建请求、收藏夹、环境变量等。

侧边栏: 包括搜索栏, Request 请求的历史记录和收藏夹管理。

功能区: Request 请求设置,查看 Response 响应结果和测试结果,可以将请求保存到收藏夹。

设置区:设置和管理环境变量和全局变量。

Postman的工具

1.创建collection集合(在刚开始一个项目时,为了后续便于组织和管理,把同属该项目的多个 API,放在一组里。所以要先去新建一个 Collection:Create New Collection)其类似一个文件夹

 2.创建请求

 3.设置HTTP请求(设置 HTTP 的 Method 方法和输入 api 的地址以及请求参数或请求体)

 

GET是请求方法,请求方法是HTTP请求的必要要素,常见的请求方法有GET和POST两种。API地址一般为URL地址。如果是请求URL中的入参,会在Params列出参数名称及参数取值,方便我们轻松的修改各入参的值。如有需要,还应该设置HTTP请求Headers部分。

如果是POST请求,需要将请求方法设置为POST,一般说来POST请求是有请求体的,固需要在Body部分中编写正确的请求body内容和Content-Type的值(在Headers中进行设置)

GET和POST的区别(

l GET 使用URL 或Cookie 传参,而POST将数据放在Body 中。

l GET的URL 在长度上会有限制,而POST没有。

l POST比GET相对安全,因为在地址栏不可见。

l 一般POST请求用来获取数据,POST请求用来发送数据。

4.检查结果(断言)

 Postman的断言功能在Test模块中,比如要测试返回结果是否含有某一字符串,就需要在Test中编写相应的代码,Test中的代码使用的是JavaScript语法。

我们先来了解下postman断言的一些特点 ,具体如下

  • 断言编写位置:Tests标签
  • 断言所用语言:JavaScript
  • 断言执行顺序:在响应体数据返回后执行 。
  • 断言执行结果查看:Test Results

在上面我们介绍到,编写的断言代码是JavaScript,那如果不会写怎么办 ? 不用担心,因为postman已经给我们内置了一些常用的断言 。用的时候,只需从右侧点击其中一个断言,就会在文本框中自动生成对应断言代码块 。

 postman自带Tests函数:

Postman提供了参考代码供我们选择即可,主要断言代码有如下几种:

# 断言状态码是否为200,在断言中此种断言价值不高

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

# 断言响应文本中是否包含某个数据串,常用

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

# 使用JsonPath断言

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

# 检查响应正文中是否包含某个子串

pm.test("Body is correct", function () {
	pm.response.to.have.body("response_body_string");
});

# 响应信息包含列表中其中某一个

pm.test("Successful POST request", function () {
	pm.expect(pm.response.code).to.be.oneOf([201,202]);
});

# 将xml响应转为json

var jsonObject = xml2Json(responseBody);

手动Tests函数:

也可以使用断言并赋值的形式,相对而言,以下方式会更为简洁实用。

# 检查response的body中是否包含字符串

tests["Body matches string"] = responseBody.has("string_you_want_to_search");

# 检查JSON节点的值和节点元素的个数为5

var data = JSON.parse(responseBody).city; //把JSON字符串转化为对象
tests["Your test name"] = data.value===100;
tests["program's lenght"] = data.programs.length===5;

# 验证Response time是否小于某个值

tests["Response time is less than 200ms"] = responseTime < 200;

 postman高级操作

在Postman中断言的操作非常灵活。

pm.test("预期结果包含:长沙,实际结果为:"+result, function () {
   if(JSON.parse(responseBody).city==="长沙"){
       pm.expect(pm.response.text()).to.include("千里");
       pm.expect(pm.response.text()).to.include("长沙");
   }else if(JSON.parse(responseBody).city==="Changsha"){
       pm.expect(pm.response.text()).to.include("千里");
       pm.expect(pm.response.text()).to.include("Changsha");
   }else if(JSON.parse(responseBody).city==="長沙"){
       pm.expect(pm.response.text()).to.include("千里");
       pm.expect(pm.response.text()).to.include("長沙");
   }
});

 5.保存接口配置

待整个接口都调试完毕后,记得点击 Save 去保存接口信息:

去保存当前 API 接口,然后需要填写相关的接口信息:

l Request Name: 请求的名字

我一般习惯用保存为 接口的最后的字段名,比如

l Request Description: 接口的描述

最好写上该接口的要实现的基本功能和相关注意事项

支持 Markdown 语法

Select a collection or folder to save: 选择要保存到哪个分组(或文件夹)

往往保存到某个 API 接口到所属的该项目名的分组

6.postman参数

比如对于一个GET请求的url是

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx508a5cacbbfc1141&secret=fa4fc7f17ddead12d7cdcd994e7d2543

对应的其实是?key=value形式中包含HTTP的GET的query string = query parameters

postman可以自动帮我们解析出对应的参数(在不删除某参数的情况下,如果想要暂时不传参数,可以方便的通过不勾选的方式去实现)

 发送post请求(key=value):

以login 接口为例,在Body 中选取"form-data" 格式,输入所需的key-value, 选取对应的环境变量。

 

 

在Body 中选取"raw" 格式,根据接口文档输入json 数据, 有需要应用环境变量的选取环境变量。

 7.变量

变量的使用可以帮我们解决很多问题,可以使数据重复利用,也可以解决跨请求,跨集合的数据访问 。在postman支持多种变量,如局部变量、环境变量、集合变量、全局变量等 。定义适合的变量有助于脚本的稳定性和扩展性。

在postman常用的三种变量分别是全局变量,环境变量,集合变量 。

  • 全局变量:一旦申明了全局变量,全局有效,也就是说postman中的任何集合,任何请求中都可以使用这个变量。它的作用域是最大的 。
  • 环境变量:要申明环境变量,首先的创建环境,然后在环境中才能创建变量 。如果要想使用环境变量,必须先选择(导入)这个环境,这样就可以使用这个环境下的变量了 。需要说明的是环境也可以创建多个 。每个环境下又可以有多个变量 。
  • 集合变量:集合变量是针对集合的,也就是说申明的变量必须基于某个集合,它的使用范围也只是针对这个集合有效 。

其中,他们的作用域范围依次从大到小:全局变量>集合变量>环境变量 。 当在几个不同的范围内都申明了相同的变量时,则会优先使用范围最小的变量使。

 

定义好变量,接下来就可以使用变量了 。需要注意的是,在不同的位置获取变量,编写的规则也是不一样的 。

如果在请求参数中获取变量,无论是获取全局变量,还是环境变量,还是集合变量,获取的方式都是一样的编写规则:{{变量名}} 。

  • 请求参数指的是:URL,Params , Authorization , Headers , Body

如果是在编写代码的位置(Tests,Pre-requests Script)获取变量,获取不同类型的变量,编写的代码都不相同,具体如下:

  • 获取环境变量:pm.environment.get(‘变量名’)
  • 获取全局变量:pm.globals.get('变量名')
  • 获取集合变量:pm.pm.collectionVariables.get.get('变量名')

 

8. postman认证(Authorization)

这又是一个非常实用的功能,对我们做接口测试来说,经常要处理登录认证的情况 。如果不用这个Authorization其实也能解决认证的问题,无非就是把要认证的数据按照要求在指定位置传入参数即可。比如我们之前测试的系统,登录后返回的token要在每个请求接口的headers中传入 。这时就需要在每个headers中都填写一个认证参数传入 ,但是这样做的话太过繁琐,如果使用认证(Authorization)功能的话,就会大大简化了我们的认证过程。

 9.postman  runner说明

功能说明:

  • All Collections : 列出所有集合,可以选择一个集合运行
  • Environment : 环境列表 ,当选择的集合使用到了环境,这里就必须选择 ,反之,可不选。
  • Iterations :迭代次数,这里面更多的使用场景读取外部文件进行参数化 。当然一个集合也可以重复运行多次。
  • Delay :请求之间的间隔时间,默认为0也就是没有间隔 。
  • Data : 读取数据文件进行参数化的选项 。
  • Save Seponses : 保存响应数据,默认情况不开启 ,但是当集合中有请求报错时,打开此选项 。就可以在Run Result查看每个请求的响应结果 ,这样有助于调试错误。
  • keep variable values : 持久变量,默认为开启状态,开启后,前面请求的变量设置的值,后面有请求修改此值,会覆盖此值 。
  • run collection without using stord cookies : 不使用cookies保存的值运行
  • Save cookies after collection run : 集合中的请求在执行期间创建/更新cookie 。打开此选项,可以将cookie保存到cookie管理器,从而覆盖任何现有的cookie。
  • Recent RUN :右侧是保存了最近运行的结果,可以点击打开查看 。也可以下载 和删除 。
  • Import/Export :可以将运行结果导出后再导入结果进行查看 。

看着以上如此多的选项,到底对我们使用有那些帮助呢 ?整理了一些常用的选项做个说明

Iterations 、Data主要用于数据参数化;

Save Seponses主要用于保存响应记录,这个选项对于我们调试bug很有帮助 。

keep variable values默认是勾选上的,也建议勾选上,对我们运行一个集合下的很多用例时,经常会出现值覆盖,若不勾选此选项,可能会有问题 。

 

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

postman使用教程 的相关文章

随机推荐

  • PX4飞控的PPM接收机

    xff08 一 xff09 原理图 xff1a PX4飞控的PPM输入捕获由协处理器完成 xff0c 接在A8引脚 xff0c 对应Timer1的通道1 xff08 二 xff09 PPM协议 xff1a PPM的每一帧数据间隔为20ms
  • WPF DocumentViewer控件如何隐藏搜索栏/工具栏/部分按钮

    WPF DocumentViewer中默认是显示工具栏和搜索栏的 xff0c 如果想隐藏工具栏和搜索栏 xff0c 可以通过以下代码实现 lt DocumentViewer gt lt DocumentViewer Resources gt
  • 什么是stl? 如何使用stl?

    1 什么是STL xff1f STL Standard Template Library 是C 43 43 的标准模板类库 STL是一个功能强大的基于模板的容器库 xff0c 通过直接使用这些现成的标准化组件可以大大提高算法设计的效率和可靠
  • STM32F4+LAN8720A+STM32CubeMX+Lwip 网络通讯(以太网通讯)小实例

    一 目标实现 通过网络通信的方式 xff0c 当上位机发出对应指令给STM32 xff0c STM32根据收到的指令来执行对应的操作 xff08 例如 xff1a 亮灯 灭灯 闪灯等 xff09 还有可以将STM32连上路由器 xff0c
  • STM32: ADC采样频率及相应时间的确定

    转载自 xff1a http m elecfans com article 594153 html 一 STM32 ADC 介绍 STM32 ADC 是一个12 位精度 一种逐次逼近型模拟数字转换器 它有多达18个通道 xff0c 可测量1
  • Windows中使用GCC编译STM32CubeMx生成的Makefile文件

    1 下载ARM官方对应Cortex M内核的GCC编译器 xff1a https developer arm com tools and software open source software developer tools gnu t
  • STM32-USB学习系列(四):USB-HID模拟鼠标功能

    一 整体步骤 使用STM32CubeMX 生成 HID 模版自己定义mouseHID 结构体 xff0c 然后通过发送鼠标报文控制鼠标的移动 二 STM32CubeMX 配置 芯片 xff1a STM32F407VG 使用USB的时候 xf
  • STM32实用应用系列:串口接收不定长数据(HAL库 UART + DMA)

    目录 一 串口接收不定长数据的实现思路 二 具体实现代码 1 USART 的配置 2 DMA的配置 xff08 放在 HAL UART MspInit 中 xff09 3 USART 中断处理函数 一 串口接收不定长数据的实现思路 在串口通
  • 使用Ventoy制作启动盘

    目录 一 Ventoy介绍 二 Ventoy的使用 三 Ventoy中MBR分区形式与GPT分区形式对比 四 使用自定义的EFI的步骤 Ventoy下载地址 xff1a https www ventoy net cn index html
  • DRAM知识整理系列(三):部分时序参数整理

    目录 一 时序参数整理 第一时序 xff1a 1 tCL CAS Lantency Control 2 tRCD RAS to CAS Delay 3 tRP Row Precharge Timing 4 tRAS RAS Active T
  • ROS移动机器人开发——硬件引脚

    我们使用的32开发板为冰达机器人官方的开发板 xff0c 类型为STM32RCT6 32章节的目的为 xff0c 将官方所给源码转化为 官方标准库函数来进行使用 需求提出 xff1a 电源 1 3 3V 200ma供电 2 输入 9 12
  • UDS知识整理(一):UDS简介与UDS要求规范简介

    本文参考自 xff1a ISO DIS 14229 1 一 汽车诊断与OSI模型对比 注 xff1a OSI全称 xff1a Open System Interconnection Reference Model xff0c 即开放式系统互
  • Renesas:配置中断的常规流程——使用C语言方式配置中断向量表(二)

    Renesas xff1a 配置中断的常规流程 不吃鱼的猫丿的博客 CSDN博客 在前面的文章讲到了Renesas的常规中断配置流程 xff0c 当需要添加新的中断时 xff0c 每次都需要到boot asm中添加中断服务的函数名与中断服务
  • 工作经验总结:MCU寄存器库的开发

    目录 一 寄存器的结构体定义 二 寄存器的地址的宏定义 在进行MCU开发的时候 xff0c 可能会遇到需要自己手写寄存器库的情况 xff0c 以下整理了一些相关的示例以及注意事项 一 寄存器的结构体定义 注意 xff1a 在定义寄存器结构体
  • 汽车标定知识整理(三):CCP报文可选命令介绍

    目录 一 可选命令 CRO命令报文的可选命令表 xff1a 二 可选命令帧格式介绍 1 GET SEED 获取被请求资源的种子 xff08 0x12 xff09 2 UNLOCK 解锁保护 xff08 0x13 xff09 3 SET S
  • LIN资料整理(一):LIN入门简介

    目录 一 LIN是什么 1 LIN简介 2 LIN的适用场景 3 LIN协议版本 4 LIN的主从机节点 主从机任务与LIN总线特点 一 LIN是什么 1 LIN简介 LIN 是Local Interconnect Network 的缩写
  • LIN资料整理(二): LIN协议层

    目录 一 LIN帧的结构 1 帧头的帧结构 xff08 1 xff09 同步间隔段 xff08 2 xff09 同步段 xff08 3 xff09 受保护ID段 2 应答的帧结构 xff08 1 xff09 数据段 xff08 2 xff0
  • Altium designer学习(一)AD画板流程总结

    AD画板 xff0c 初学者总是容易犯上一个手忙脚乱的错误 一会儿去找封装 xff0c 一会儿又去忙原理图 这样都是很影响效率的事情 xff0c 要解决这个问题 xff0c 那就是画板得确定下来一个合理的流程 因此 xff0c 在第一篇就强
  • 网络编程(UDP/TCP)

    1 网络模型 数据从网络中一个终端上的应用程序传送到另外一个终端的应用程序 xff0c 中间需要经历很多过程 xff0c 有多方参与对数据进行层层封装 转发 我们把这个流程在逻辑上进行分层 xff0c 每一层根据本层的规章制度 协议 各司其
  • postman使用教程

    Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件 市场上有很多优秀的 xff0c 完善的接口测试工具 xff0c 比如SoapUI xff0c Postman xff0c JMeter yapi等 xff0c