1.Postman背景介绍

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

2.Postman的操作环境

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

我们推荐使用Postman Native APP,但Postman也可以作为Chrome应用程序。 以前,Postman Chrome应用程序的用户必须下载Postman Interceptor Chrome扩展程序才能在桌面浏览器中管理Cookie和捕获请求。详细了解为什么支持Postman Chrome应用程序已被弃用。
Postman Chrome应用程序只能在Chrome浏览器上运行。 要使用Postman Chrome应用,您首先需要安装Google Chrome。如果您已安装Chrome,请转到Chrome网上应用店的postman页面,然后点击“添加到Chrome”。下载应该需要几分钟,这取决于您的网络连接。 一旦你下载了应用程序,你可以启动postman。如果你选择在Google应用中使用Postman,一定要先下Postman再下载Postman interceptor

3.Postman的基础功能

4.接口请求流程

4.1 GET请求

GET请求:点击Params,输入参数及value,可输入多个,即时显示在URL链接上,所以,GET请求的请求头与请求参数如在接口文档中无特别声明时,可以不填。

get请求示例

GET响应:右上角显示响应HTTP状态码、请求的耗时

get响应示例

需特别注意的是注意区别HTTP状态码与响应正文中的状态码,只有HTTP状态码是200时,才代表这个接口请求是正确的,这个是HTTP协议定义的,而响应正文的状态码,是程序员自已定义的,可以是200,也可以定义为其它值,是为了让接口使用者去区分正常数据与异常数据

状态码与响应码不一致

4.2 POST请求

4.2.1 POST请求一:表单提交

先看下图POST表单提交示例:

表单提交示例

上图示例中设置了请求方法,请求URL,请求参数,但没有设置请求头。有一个要明确的点是,请求头中的Content-Type与请求参数的格式之间是有关联关系的。

Content-Type与请求参数的格式之间的关联

当选择x-www-form-urlencoded的参数方式后,postman自动的帮我们设置了Content-Type,所以不需要我们人工干预,这就是使用一款流行工具的好处,把一些基础点都帮我们处理了。

4.2.2 POST请求二:json提交

先看下图json提交示例:

json提交示例

上图中,当我们选择了JSON(application/json)时,postman同样帮我们自动设置了Content-Type,可以自行的去查看Headers.

4.2.3 post请求三:xml提交

先看下图XML提交示例:

XML提交示例

上图中,当我们选择了XML(text/xml)时,postman同样帮我们自动设置了Content-Type,可以自行的去查看Headers.

4.2.4 post请求四:自行设置Content-Type

HTTP的POST请求的参数,都是放在请求正文中的,只是根据Content-Type来判断请求正文的格式,那么我们同样可以在表单提交时,选择raw,然后自行设置Content-Type为application/x-www-form-urlencoded。

POST请求的参数

自行设置Content-Type

4.2.5 POST请求五:二进制文件提交

先看下图二进制文件示例:

二进制文件提交

Body下,选择binary,在这里你可以发送视频、音频、文本等文件。

5. postman断言

一个完整的接口测试,包括:请求->获取响应正文->断言,我们已经知道了请求与获取响应正文,下面来介绍如何用postman进行断言。

Tests

这个”Tests”就是我们需要处理断言的地方,postman很人性化的帮我们把断言所用的函数全给准备好了:

SNIPPETS

举例说明:首先设置一个断言场景,根据断言场景来举例说明Postman断言如何使用。

1、判断HTTP返回状态码为200

2、判断响应正文中是否包含:"statusCode":200

3、解析响应正文,并判断statusCode的值是200,message的值是”Success”

第一步:在SNIPPETS中,往下拉,有一项”Status code:Code is 200”,这个就是为场景中的第 1 条准备的,判断HTTP返回状态码是否为200。点击这一项,可以看到在其左边,断言代码自动添加,见下图:

Status code

解释一下这句代码的意思:

tests["Status code is 200"]中的tests是一个内置对象,tests["Status code is 200"]是指为这个断言起个名称叫”Status code is 200”,这个名称可以自行修改。

responseCode.code === 200中的responseCode是内置对象,responseCode对象中有个属性是code,是指HTTP状态码的code,判断code是否为200.

综合起来,这句代码的意思是:名称为”Status code is 200”的断言中,判断responseCode对象的code属性值(HTTP状态码)是否为200。

第二步:同样在SNIPPETS中,找到一项”Response body:Contains string”,这个就是为场景中的第2条准备的,判断响应正文中的字段。点击后,在其左边,断言代码自动添加,见下图:

Contains string1

其中我们需要修改想要在响应报文中找到的内容:

tests["Body matches string"] = responseBody.has('"statusCode":200');    //对照第2条场景:判断响应正文中是否包含:"statusCode":200

Contains string2

第三步:我们需要解析JSON串了,所以,在SNIPPETS中找到”Response body:JSON value check”并点击,在其左边,断言代码自动添加,见下图:

JSON value check1

我们可以看出,这里面其实是JS代码,jsonData变量其实是解析完JSON后的对象,在JS中,一个JSON对象获取其属性的值,直接是用jsonData.value,于是,我们把代码给修改一下,来判断第3条场景:

tests["response statusCode"] = jsonData.statusCode === 200;  //判断statusCode的值是200

tests["response message"] = jsonData.message === 'Success';  //判断message的值是”Success”

JSON value check2

这样一来,我们可以看到一共有Tests的断言4个,点击Send,发送请求,在响应区内可以看到如下图:表示断言全部通过。

以上,SNIPPETS中还有很多的函数提供给我们,努力学习吧~~~

6.管理用例---Collections

Collections集合:也就是将多个接口请求可以放在一起,并管理起来。什么样的接口请求可以放在同一个collection里?

在这里告诉大家可以这样:一个工程一个Collection,这样方便查找及统一处理数据。

6.1 第一步:创建Collections

点击上图中的带+号的图标,输入Name:”demo”,Description:”demo for Collections”,点击Create按钮即创建成功一个Collections.

Create Collections

6.2 第二步,在Collections里添加请求

在右侧准备好接口请求的所有数据,并验证后,点击save按钮。

save按钮

选择Collection及填写好Request name、Request description后,点击右下角的save to collection按钮,则该请求被添加到Collection中。

save request

添加成功后,可在左侧列表中,collection中查看刚刚添加的请求。

6.3 第三步:Collection精细化---Folder

随着放入Collection的请求越来越多,混乱就又出现了,在找一个请求时,要找半天,于是将collection中的请求分门类别就很重要了,于是,在collection中就可以添加Folder了,将相同场景的请求放入同一个Folder中,于是就实现了模块化的管理了。

点击下图中的Add Folder后,即可创建Folder。

Add Folder按钮位置

添加上Folder name,即模块名称后,点击Create,创建成功一个Folder。

add Folder

接下来,只需要把相同场景的请求拖入相同的Folder即可,这样就实现了模块化的管理了。模块化以后的结构:

模块化的管理结构

6.4 第四步:运行Collection

将工程模块化的用例管理起来后,借着这个管理起来的东风,也可以将工程模块化的用例执行起来,即一次执行一整个collection里的用例,或者执行一个collection里的某一个Folder里的用例。

点击下图中的Run:

run

下图中的”Choose collection or folder”,如果选择demo,表示运行demo这一整个collection的用例,如果选择GET,即只运行demo下的GET模块下的用例。

Environment,即运行环境,是开发环境还是测试环境,需事先配置,大家可以下去自已尝试一下。

Iterations,即重复运行次数。会将选择好的collection中folder重复运行。

Delay,间隔时间。用例与用例间的间隔时间。

Data,外部数据加载,即用例的参数化,可以与Iterations结合起来用,实现参数化,也就是数据驱动。

Run Demo,点击运行,运行完成后,即可得出一个简易的聚合报告。

6.5 第五步:Collection运行参数化

在Iterations重复运行时,如果某个用例希望每次运行时,使用不同的数据,那么应该满足如下2个条件:

1、脚本中要用到数据的地方参数化,即用一个变量来代替,每次运行时,重新获取当前的运行数据。

2、需要有一个数据池,这个数据池里的数据条数,要与重复运行的次数相同。


Postman的runner给我们提供了Iterations的输入项,也提供了Data的文件选择项,也就是意味着数据池是一个外部文件。

如果Iterations里的值为2,那么,这个外部文件里也应该有两条数据,postman希望我们这个外部文件里的数据是一个json(当然也可以是其它

数据格式).

为了表示两条数据,这个json应该是一个list结构(如下图),同时,由于脚本要用到数据的地方需要参数化,需要变量,所以,每一条数据应该就是一个map,map的key对应脚本中的变量。

外部文件里的数据

上图中表示提供了一个msg的变量,每次运行对应不同的值,预示着在脚本中可以用到msg这个变量,那在脚本中如何用?

使用变量

如上图断言中用data.msg,其中data是个内置对象,即代表每一次运行的那个map数据,所以,可以用data.msg来获取每次运行的对应的值,当然,由于是个map,也可以用data[‘msg’]来获取对应的值。

7.设置环境变量

有时需要在不同的环境下跑相同的测试,此时可以通过设置环境变量来动态选择。点击右上角的设置按钮-Manage Environments:

Manage Environments

填写该环境的名称:如测试环境,并在key和value中填写需要的键值。

add1

add2

使用这些键值的时候只需要加上两个花括号引用key,例如: {{url_base}}/admin/offer/

引用key

建立多个环境时,key通常都是相同的,只是value不同。创建好所有环境后,在跑用例的时候在右上角下拉列表选择需要的环境就可以了。

选择环境变量

8.身份验证Authentication

显示browser cookies,需要开启Interceptor。点击右上角的Interceptor 进行安装,并开启:

Interceptor

身份验证Authentication:

postman有一个helpers可以帮助我们简化一些重复和复杂的任务。当前的一套helpers可以帮助你解决一些authentication protocols的问题。

8.1 Basic Auth

填写用户名和密码,点击update request后,headers中自动添加Authorization。图中用户名和密码均使用的key变量:

Basic Auth

8.2 Digest Auth

要比Basic Auth复杂的多。使用当前填写的值生成authorization header。所以在生成header之前要确保设置的正确性。如果当前的header已经存在,postman会移除之前的header。

8.3 OAuth 1.0

postman的OAuth helper让你签署支持OAuth

1.0基于身份验证的请求。OAuth不用获取access token,你需要去API提供者获取的。OAuth 1.0可以在header或者查询参数中设置value。

8.4 OAuth 2.0

postman支持获得OAuth 2.0 token并添加到requests中。

postman竟然如此之强大!我们还有什么理由去拒绝?介绍完之后,可能新的问题又来了,如何与jenkins结合实现持续集成?

所以,产生了个newman,是个命令行运行postman请求的工具,建议大家自行去研究下,因为那确实就只是个命令行的工具而已!

【转】Postman 使用方法详解的更多相关文章

  1. postman使用方法详解

    postman的使用方法详解   Collections:在Postman中,Collection类似文件夹,可以把同一个项目的请求放在一个Collection里方便管理和分享,Collection里 ...

  2. 接口调试之Postman 使用方法详解

    一.Postman背景介绍 用户在开发或者调试网络程序或者是网页B/S模式的程序的时候是需要一些方法来跟踪网页请求的,用户可以使用一些网络的监视工具比如著名的Firebug等网页调试工具.今天给大家介 ...

  3. Postman 使用方法详解

    转自:https://blog.csdn.net/fxbin123/article/details/80428216 一.Postman背景介绍 用户在开发或者调试网络程序或者是网页B/S模式的程序的 ...

  4. Postman+Postman interceptor的安装和使用-解决把chrome浏览器登录状态同步到postman进行有依赖的接口测试 Postman 使用方法详解

    Postman+Postman interceptor的安装和使用-解决把chrome浏览器登录状态同步到postman进行有依赖的接口测试   问题引入:做接口测试时,有依赖关系的接口往往不好测试( ...

  5. session的使用方法详解

    session的使用方法详解 Session是什么呢?简单来说就是服务器给客户端的一个编号.当一台WWW服务器运行时,可能有若干个用户浏览正在运正在这台服务器上的网站.当每个用户首次与这台WWW服务器 ...

  6. Kooboo CMS - Html.FrontHtml[Helper.cs] 各个方法详解

    下面罗列了方法详解,每一个方法一篇文章. Kooboo CMS - @Html.FrontHtml().HtmlTitle() 详解 Kooboo CMS - Html.FrontHtml.Posit ...

  7. HTTP请求方法详解

    HTTP请求方法详解 请求方法:指定了客户端想对指定的资源/服务器作何种操作 下面我们介绍HTTP/1.1中可用的请求方法: [GET:获取资源]     GET方法用来请求已被URI识别的资源.指定 ...

  8. ecshop后台增加|添加商店设置选项和使用方法详解

    有时候我们想在Ecshop后台做个设置.radio.checkbox 等等来控制页面的显示,看看Ecshop的设计,用到了shop_config这个商店设置功能 Ecshop后台增加|添加商店设置选项 ...

  9. (转)Spring JdbcTemplate 方法详解

    Spring JdbcTemplate方法详解 文章来源:http://blog.csdn.net/dyllove98/article/details/7772463 JdbcTemplate主要提供 ...

随机推荐

  1. Help him--hdu5059(模拟 大坑)

    http://acm.hdu.edu.cn/showproblem.php?pid=5059 直接说可能出现的情况 #include <iostream> #include <cst ...

  2. 【.Net Core 学习系列】-- 自定义错误页面在IE浏览器中不能正常显示

    测试场景: 1. 新建.Net Core Web项目 2. 选择模板: 3. 修改Error页面代码:(去掉母版页并修改页面显示信息) 4. 修改[ASPNETCORE_ENVIRONMENT],并抛 ...

  3. 在Studio中使用Access数据库时,提示“未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序”

    错误提示:

  4. centos mysql错误信息处理

    mysql_secure_installation 提示错误:Enter current password for root (enter for none):ERROR 1045 (28000): ...

  5. CentOS 7.0安装Zimbra 8.6邮件服务器

    Zimbra的核心产品是Zimbra协作套件(Zimbra Collaboration Suite,简称ZCS). 系统:Centos7 ip地址:192.168.127.131 安装前准备 1.关闭 ...

  6. Ubuntu使用adb连接android手机失败unknown的解决的方法

    Ubuntu使用adb连接android手机失败unknown的解决的方法   Ubuntu下通过USB数据线连接G11手机后,adb可能无法识别到设备.依照一下步骤能够解决此问题. 1.在termi ...

  7. Domino/Xpages Bootstrap 动态生成首页功能

    因为之前用户须要做个动态首页的功能,但一般用户又不熟HTML,所以最佳的方法能够使用拖动的方法来配置首页,一些主要的组件是已经帮用户的依据实际数据情况已经制作OK,用户仅仅须要简单配置就能够更改首页, ...

  8. iOS开发中正则式的使用

    iOS开发中正则式的使用 第一:常规的使用方式 NSString *str = @"abcded111093212qweqw"; //找到内部一个即可 NSString *patt ...

  9. Bean Query 第一个版本号(1.0.0)已公布

    BeanQuery 是一个把对象转换为Map的Java工具库. 支持选择Bean中的一些属性.对结果进行排序和依照条件查询. 不只能够作用于顶层对象,也能够作用于子对象.很多其它具体的介绍能够看我的博 ...

  10. mondb08---导入导出

    //Mongodb数据的导入导出 : 导入/导出可以操作的是本地的mongodb服务器,也可以是远程的. 所以,都有如下通用选项:(本地机就不用这个了) -h host 主机 --port port ...