Postman使用


Postman的使用介绍

​ Postman 是一种非常流行的接口调试工具,可以发送几乎所有类型的HTTP请求。

​ 在前后端分离的开发写作方式下,可以快速的测试接口的功能,验证接口返回数据。

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

一、Postman环境准备

1.Postman下载

​ 官网下载地址:https://www.postman.com/downloads/

​ 官方学习文档:https://learning.postman.com/docs/

2.Postman账号

  1. 账号部分我们可以点击跳过,直接进入应用

  1. 左侧栏菜单

二、发送HTTP请求

1.创建一个请求

1.1 入口
  1. 从集合中右键添加请求
  2. 从“+”号按钮,添加请求
  3. new -> HTTP Request,添加请求
  4. overview页面
1.2 请求页面的区域划分

1.3 发送第一个请求
[GET] www.baidu.com

选择 GET 请求,url 输入“www.baidu.com”,点击 Send

1.4 发生了什么

image

注:postman样本集合并参考此示例API的文档

1.5 HTTP 请求方法

2.GET请求

GET 请求指定的页面信息,并返回实体主体。

2.1 接口参数

Query String Parameters

当发起一次GET请求时,参数会以url string的形式进行传递。即?后的字符串则为其请求参数,并以&作为分隔符。

[GET] https://postman-echo.com/get?id=1

这段url 意思是:
​ GET方式
​ 使用 https协议
​ 请求服务器:postman-echo.com
​ 请求资源路径:/get
​ 并携带参数名“id”,值为 1


2.2 多参数请求
[GET] https://postman-echo.com/get

入参params:
	"username": "xiaomi"
	"password": "123456"

在url后面,多个参数之间以&作为分隔符拼接参数

2.3 响应区域说明

4.POST请求

POST请求方法 - 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。(具体以后端实现为准,现在有很多查询数据的接口也用post方式请求)

​ body提交的数据,必须包含在消息主体中entity-body中。

4.1 Postman中content-type类型

​ Content-Type(内容类型),一般是指网页中存在的 Content-Type,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件

​ 数据发送出去后,需要接收的服务端解析成功,一般服务端会根据content-type字段来获取参数是怎么编码的,然后对应去解码

  • x-www-form-urlencoded

​ "content-type": "application/x-www-form-urlencoded"

​ application/x-www-form-urlencoded :

form表单中默认的编码方式,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)

  • form-date

​ "content-type": "multipart/form-data"

​ multipart/form-data : 需要在表单中进行文件上传时,就需要使用该格式。因为有键可以上传多个文件。

  • raw:原生,也就是原始的意思,可以上传text、json、xml、html等,会在header中设置content-type类型随请求一起发送到服务器上

    常用:"Content-Type": "application/json",

  • binary

    ​ Content-Type:application/octet-stream,二进制流数据,通常用来上传文件,由于没有键值,所以,一次只能上传一个文件。如:图像、音频、视频等

示例接口:

[POST] https://postman-echo.com/post

"username": "xiaomi"
"password": "123456"

5.PUT&DELETE请求

5.1 PUT请求
https://postman-echo.com/put

PUT请求方法类似于POST。它也意味着将数据传输到服务器(并引发响应)。返回什么数据取决于服务器的实现。

一个PUT请求可以传递参数使用“Query String Parameters”的,以及请求body。例如,在以下原始 HTTP 请求中
image

5.2 DELETE请求

DELETE方法用于删除服务器上的资源。DELETE请求的确切用途取决于服务器实现。
DELETE请求同时支持“Query String Parameters”参数和请求body 传参给服务器。

https://postman-echo.com/delete

6.使用Cookie

​ http无状态:无状态协议是指http协议本身对于事务处理没有记忆功能,服务器不知道浏览器的状态。通俗的即使你登录了,去访问同一个网站的不同网页,服务器都不会知道你是谁,如果需要记录登录用户的信息,用户操作,用户行为等数据需要使用cookie或session来存储。

​ Cookies有服务器生成,存储在响应头中,返回给客户端。客户端会将cookies保存下来。在客户端发送请求的时候user-agent会自动获取本地存储的cookies,将cookies信息存储在请求头中一起发送给服务器。

[GET] www.baidu.com

未登录状态下,返回显示

登录成功 -> F12打开调试工具,切换到Network -> 触发请求 -> 查看接口请求头cookies

【练习】

CSDN登录后

​ 使用接口利用cookies,修改CSDN的 “消息” - “消息设置” - “点赞”, 开关设置的状态

https://msg.csdn.net/v1/web/message/notifySetting/set

​ {"msgType":15,"settingResult":true}

​ Cookies失效

三、Postman中的变量

⭐思考:

​ 在项目开发的不同阶段可能存在不同环境,比如 测试环境,预发布环境,生产环境

https://test.postman-echo.com/post  - 测试环境
https://uat.postman-echo.com/post - 预发布环境
https://postman-echo.com/post - 生产环境

如果我们对项目进行测试,在切换部署环境的时候,我们是不是得把所有的请求的url地址都改一遍?有没有一种高效的办法?

1.变量的类型

  • Global -全局变量

    允许您访问集合、请求、测试脚本和环境之间的数据。全局变量在整个工作区都可用。

  • Collection - 集合变量

    在集合中的整个请求中都可用,并且与环境无关,因此不要根据所选环境进行更改。

  • Environment - 环境变量

    允许您针对不同环境定制处理,例如本地开发与测试或生产。一次只能激活一个环境。

  • Data - 数据变量

    来自外部 CSV 和 JSON 文件,用于定义在通过 Collection Runner 运行集合时可以使用的数据集。

  • Local - 本地变量

    是临时的,只能在您的请求脚本中访问。局部变量值仅限于单个请求或集合运行,并且在运行完成后不再可用。

如果在两个不同的作用域中声明了同名变量,则将使用作用域最窄的变量中存储的值

3.全局变量和环境变量的定义

在Postman界面右上角,点击"眼睛"图标,即可开始设置环境变量和全局变量。

我们准备两个环境变量。test-测试环境、release-生产环境

4.变量的引用

可以使用双花括号在整个 Postman 用户界面中引用变量。{{variable_key}}

5.集合变量&本地变量

5.1 集合变量的定义

5.2 局部变量的定义

​ pre-request Script 前置脚本中设置

pm.globals - 全局变量(全局生效)

pm.environment - 环境变量(仅在同一个环境中生效)

pm.collectionVariables - 集合变量(仅在同一个集合中生效)

pm.variables - 本地变量(本地变量值仅限于单个请求或集合运行)

设置变量(以全局变量举例)

pm.globals.set("variable_key", "variable_value") - 设置一个全局变量

pm.globals.unset("variable_key") - 移除一个全局变量

pm.globals.get("variable_key") - 获取一个全局变量的值

【练习不同变量的定义和引用】

四、接口设置断言

​ 一般来说执行完测试,我们需要对结果进行一个校验,判断结果是否符合我们的预期,也就是断言。一般会根据返回的数据进行断言。

https://postman-echo.com/postname:zhangsan

对接口返回的响应体中的信息返回进行断言

form.name

  1. 切换到Tests 菜单tab页

    重点:设置json返回断言

    pm.test("断言名称,自由取名", function () {  var jsonData = pm.response.json();  pm.expect(jsonData.form.name).to.eql("zhangsan");});
    
  2. 断言结果显示:

【练习断言】

​ 修改CSDN消息开关状态后,断言修改成功

五、接口参数依赖

业务场景中,多个接口之间的调用会存在下个接口的入参是上个接口的返回这种情况。所以在设计场景化的自动化接口测试用例的时候,我们必须解决接口之间的参数依赖问题

场景:api1的接口返回数据,作为 api2接口的入参信息

[POST] https://postman-echo.com/postname:zhangsan

切换到Tests 菜单Tab页

  1. 获取上个接口的返回值

    // 定义一个my_name变量,接受接口返回数据中的某个数据var my_name = pm.response.json().form.name;// 打印该变量的信息my_nameconsole.log("获取json返回的变量值name:"+my_name);
    
  2. 设置为局部变量

    // 把my_name变量设置为局部变量,取名为pre_namepm.variables.set("pre_name",my_name);// 打印局部变量中的值:pre_nameconsole.log("获取局部中的变量pre_name值:"+pm.variables.get("pre_name"));
    
  3. 从下个接口中引用该局部变量

六、运行Collection集合

Collection Runner 允许您导入 CSV 或 JSON 文件,并在请求和脚本中使用数据文件中的值。您不能在 Postman 中设置数据变量,因为它是从数据文件中提取的,但是您可以在脚本中访问数据变量,例如使用pm.iterationData.get("variable_name").

6.1 数据准备

  1. 桌面新建文本文件
  2. 修改文件后缀名.txt 为.csv
  3. 使用excel软件打开文件
  4. 文件的第一行为变量名称定义的地方,从第二行开始为变量的值
  5. 另存为后缀为.csv文件(UTF-8)

例:

6.2 接口引入数据变量

在接口入参使用双花括号引用数据变量(csv第一行定义的变量名)

6.3 创建Runner执行Collection测试计划

  1. 点击面板下方的Runner -> 鼠标选择某个集合后拉入面板

  1. 面板设置解释

  2. 检查文件参数预览

  3. 点击运行,运行成功后,可以从控制台查看运行记录

【综合练习】

企业微信的会议室操作[增删改查]

​ 企业ID:wwd700c6aac2e73750

​ 证书:mMDT-zMjHlLR-V8_VaqwmHD9HsJ5e80X2bTy9QNyOw0


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM