Postman简介

一般简单的接口测试我们可以直接在浏览器里面进行调试,但是涉及到一些权限设置的就无法操作了,因此我们需要接口测试的相关工具;Postman是一个接口测试和http请求的工具
官网地址::https://www.getpostman.com
Postman的优点:
  • 支持各种的请求类型:get、post、put、patch、delete等
  • 支持在线存储数据,通过账号就可以进行迁移数据
  • 很方便的支持请求header和请求参数的设置
  • 支持不同的认证机制,包括 Basic Auth,Digest Auth,OAuth 1.0,OAuth 2.0 等
  • 响应数据是自动按照语法格式高亮的,包括HTML,JSON和XML

下载安装

到官网下载相应版本即可

Postman入门

安装成功后,进入主界面,准备开始使用Postman.

发送第一个请求

  • 1、启动软件后在引导界面点击Request,给Request命名,然后创建文件夹并把该Request归属到该文件夹下
  • 2、在地址栏输入postman-echo.com/get然后点击Send按钮,可以看到返回值。如下图所示:
    接口测试之postman

Postman工作原理

如下图所示,当你在Postman中输入请求并单击Send按钮时,服务器将接收你请求并返回Postman,Postman在接口中显示的响应。
接口测试之postman

Request编辑

在主界面可以查看、保存、编辑Request。

发送不同类型HTTP请求

GET
HTTP GET请求方法用于服务器检索数据。数据由唯一的URL(统一资源标识符)标识。
GET请求可以使用“Query String Parameters”将参数传递给服务器。例如,在下面的请求中。

接口测试之postman

  • param1和param2表示发送的参数。
  • ?后面连接参数
  • & 连接多个参数
参数编辑
  • 点击Params按钮,Post可以自动帮我们解析出对应参数。
  • 如果暂时不传参数,可以方便的通过不勾选的方式去实现。
  • 如果想要批量的编辑参数,可以点击右上角的Bulk Edit,去实现批量编辑。
响应数据 在主界面下方一栏菜单为响应菜单栏,可以查看响应内容,Cookie、Headers、响应状态码等信息
POST
HTTP POST请求方法旨在将数据传输到服务器,返回的数据取决于服务器的实现。POST请求可以使用Query String Parammeters以及body将参数传递给服务器。

接口测试之postman

Postman Body 数据类型说明:
  • form-data multipart/form-data 是Web表单用于传输数据的默认编码。这模拟了在网站上填写表单并提交它。
  • x-www-form-urlencoded 该编码与URL参数中使用的编码相同。我们只需输入键-值对,Postman会正确编码键和值。请注意,我们无法通过此编码模式上传文件。表单数据和urlencoded之间可能存在一些差异,因此请务必首先检查API的编码实现,确定是否可以使用这种方式发送请求。
  • raw 请求可以包含任何内容。除了替换环境变量之外,Postman不触碰在编辑器中输入的字符串。无论你在编辑区输入什么内容,都会随请求一起发送到服务器。编辑器允许我们设置格式类型以及使用原始主体发送的正确请求头。我们也可以手动设置 Content-Type标题,这将覆盖Postman定义的设置。
  • binary 二进制数据可让我们发送Postman中无法输入的内容,例如图像,音频或视频文件。
PUT
HTTP PUT请求主要是从客户端向服务器传送的数据取代指定的文档的内容。
PUT请求可以使用 Query String Parameters 以及 body请求体将参数传递给服务器
DELETE
HTTP DELETE方法用于删除服务器上的资源,DELETE请求可以使用Query String Parameters以及body请求体将参数传递给服务器。

Request Header

Request Header(请求头)用来说明服务器要使用的附加信息,比较重要的信息有Cookie、Referer、User-Agent等。

接口测试之postman

Response Header

Response Header(响应头)其中包含了服务器对请求的应答信息,如 Content-Type、Server、Set-Cookie 等,在Postman主界面下方Headers或者Postman Console界面都可以查看Response Header信息。

授权设置

很多时候,处于安全考虑我们的接口并不希望对外公开。这个时候就需要使用授权(Authorization)机制 授权过程验证你是否具有访问服务器所需数据的权限。当你发送请求时,您通常必须包含参数,以确保请求具有访问和返回数据的权限。Postman提供授权类型,可以轻松地在Postman本地应用程序中处理身份验证协议。

** Postman支持的授权协议有:**
接口测试之postman

Cookie设置

cookie是存储在浏览器中的小片段信息,每次请求后都将其发送回服务器,以便在请求之间存储有用的信息。比如很多网站登录界面都有保留账号密码,以便下次登录。
cookie工作原理:由于HTTP是一种无状态的协议,服务器单从网络连接上无从知道客户身份。怎么办呢?就给客户端们颁发一个通行证吧,每人一个,无论谁访问都必须携带自己通行证。这样服务器就能从通行证上确认客户身份了。这就是Cookie的工作原理。
Cookie是由服务端生成,存储在响应头中,返回给客户端,客户端会将cookie存储下来,在客户端发送请求时,user-agent会自动获取本地存储的cookie,将 cookie信息存储在请求头中,并发送给服务端。postman也可以设置、获取、删除Cookie

Set Cookies

在Send按钮下方点击Cookies文字菜单,弹出如下界面,然后可以设置Cookie.

接口测试之postman

接口测试之postman

Get Cookies

Cookie获取比较简单,直接获取Response Headers里面的set-cookie值即可,或者在主界面下方Cookie菜单栏里面也可以查看。

Delete Cookies

点击 Cookies 文字菜单,然后可以根据需求去清除对应的Cookie。

变量

问题思考

在开发不同阶段可能存在不同的环境,比如测试环境和生产环境。

测试环境API如下:

接口测试之postman

生产环境API如下:

接口测试之postman

在这种情况下,按照常规思路要么你需要维护两套环境的API,要么每次手动一个一个去修改URL,不管哪种选择都不计较麻烦且低效,那么有没有比较好的方法来解决这个问题呢?

Postman变量类型

通过比较我们发现,以上两组API主要API主要除了host不同之外其他都一样,其实把Host用变量替换,这样就可以灵活切换环境。
Postman提供了变量设置,有4中变量类型。
  • 本地变量(LocalVariable)
  • 全局变量(Global Variable)
  • 环境变量(Environment Variable)
  • 数据变量(Data Variable)

环境变量

环境变量指在不同环境,同一个变量值随着环境不同而变化,比如我们上面举例场景就可以使用环境变量,当在测试环境时,host值为:dev.postman.com,当切换到生产环境时,host值变为:postman-echo.com。
环境变量设置:在postman界面点击右上角眼睛图标,即可开始设置环境变量和全局变量。环境变量设置过程如下图所示:我们可以设置两种环境dev和release,dev是开发测试环境;release是正式的生产环境。Host环境变量,根据不同的环境值不一样。

变量引用格式为{{varname}}

接口测试之postman

本地变量

本地变量主要是针对单个URL请求设置的变量,作用域只是局限在请求范围内。如请求URL如下,这只两个本地变量(user,passwd)作为参数。请求方式为POST.

全局变量

全局变量是指在所有的环境里面,变量值都是一样的,全局变量的作用域是所有请求。
全局变量的设置有两种方式
  • 点击界面设置
  • 在脚本里设置
界面设置,点击眼睛图标后,在Global选项菜单中点击Edit菜单即可设置全局变量,如下图所示。全局变量的引用格式和环境变量一样。

接口测试之postman

脚本设置,使用脚本可以设置全局变量:variable_key表示变量名称,variable_value表示变量值。

接口测试之postman

数据变量

数据变量是通过导入外部数据文件(json文件或者csv文件),来获取变量数据。我们可以创建一个如下内容的json文件:

接口测试之postman

断言

简介

一般来说执行完测试,我们需要对测试结果来进行检验,判断结果是否符合我们的预期,也就是断言。在接口测试中一般会根据响应状态码或者响应返回的数据来进行断言。
Postman提供一个测试沙箱(Postman SandBox),测试沙箱是一个JavaScript执行环境,可以通过脚本JS脚本来编写pre-request Script和test Script.
  • pre-request Script(预置脚本)可以用来修改一些默认参数,在请求发送之前执行。有点类似于unittest里面的setUp()方法。
  • test Script(测试脚本)当接收到响应之后,再执行测试脚本。
设置断言规则
  • 响应状态码:200
  • 响应内容:返回的user参数值与定义的一致
  • 响应时间:小于0.5s
测试脚本

接口测试之postman

接口测试之postman

**注意:**变量需要在body中引入
接口测试之postman

运行Collection

批量执行
当我们想批量测试某个集合里面的各个API时,可以使用Collection Runner来批量运行API,同时可以进行环境变量、迭代执行次数、延迟时间等设置。

接口测试之postman

数据驱动

应用背景
  • 有时我们针对一个接口需要测试很多不同的参数,如果每次一个个的去修改参数值来进行测试这样效率肯定会比较低下。因此我们需要每次迭代执行传入不同的参数进行测试,那么需要导入外部数据文件进行参数化,也就是所谓的数据驱动

构建工作流

  • 在使用“Collection Runner”的时候,集合中的请求执行顺序就是请求在Collection中的显示排列顺序。但是,有的时候我们不希望请求按照这样的方式去执行,可能是执行完第一个请求,再去执行第五个请求,然后再去执行第二个请求这样的方式;那么在“Collection Runner”中如何去构建不同的执行顺序呢?
设置方法

接口测试之postman

集成Jenkins (后续补充)

相关文章: