1、Postman

  • 简介

    • Postman 是一款功能强大的网页调试与发送网页 HTTP 请求的工具。我们可以用来很方便的模拟 get 或者 post 或者其他方式的请求来调试接口。
  • 官网下载地址

  • 其它下载地址

2、使用方法

2.1 GET 请求

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

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

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

2.2 POST 请求

  • 1)POST 请求一:表单提交

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

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

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

  • 2)POST 请求二:json 提交

    • 先看下图 json 提交示例:

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

  • 3)POST 请求三:xml 提交

    • 先看下图 xml 提交示例

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

  • 4)POST 请求四:自行设置 Content-Type

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

    • POST请求的参数

    • 自行设置 Content-Type

  • 5)POST 请求五:二进制文件提交

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

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

2.3 Postman 断言

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

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

  • SNIPPETS

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

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

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

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

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

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

      • 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。

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

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

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

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

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

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

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

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

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

2.4 管理用例 Collections

  • Collections 集合:也就是将多个接口请求可以放在一起,并管理起来。什么样的接口请求可以放在同一个 collection 里?在这里告诉大家可以这样:一个工程一个 Collection,这样方便查找及统一处理数据。

  • 1)第一步:创建 Collections

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

  • 2)第二步,在 Collections 里添加请求

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

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

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

  • 3)第三步:Collection 精细化 Folder

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

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

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

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

  • 4)第四步:运行 Collection

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

    • 点击下图中的 Run:

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

      • Environment,即运行环境,是开发环境还是测试环境,需事先配置,大家可以下去自已尝试一下。
      • Iterations,即重复运行次数。会将选择好的 collection 中 folder 重复运行。
      • Delay,间隔时间。用例与用例间的间隔时间。
      • Data,外部数据加载,即用例的参数化,可以与 Iterations 结合起来用,实现参数化,也就是数据驱动。
      • Run Demo,点击运行,运行完成后,即可得出一个简易的聚合报告。

  • 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’] 来获取对应的值。

2.5 设置环境变量

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

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

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

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

2.6 身份验证 Authentication

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

  • 身份验证 Authentication:

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

  • 1)Basic Auth

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

  • 2)Digest Auth

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

    • postman 的 OAuth helper 让你签署支持 OAuth 1.0 基于身份验证的请求。OAuth 不用获取 access token,你需要去 API 提供者获取的。OAuth 1.0 可以在 header 或者查询参数中设置 value。
  • 4)OAuth 2.0

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

Postman 网络调试工具的更多相关文章

  1. Ubuntu—安装网络调试工具

    https://pan.baidu.com/s/1G6oHXp3SvcN6HMAMqTdqhA 1,在ubuntu的终端下,切换到网络调试工具所在的目录 $ cd 桌面/    #我的放在桌面上 2, ...

  2. linux系统——网络调试工具

    http://blog.csdn.net/chinalinuxzend/article/details/1799279 1.网络调试工具概说: 如 果我们把一台机器接入网络中,通过网络配置工具的配置这 ...

  3. 跨平台 GUI可视化 网络调试工具

    mNetAssisthttp://blog.chinaunix.net/uid-21977056-id-4310527.htmlhttps://github.com/busyluo/mNetAssis ...

  4. Postman(调试工具)

    Postman Postman用法简介-Http请求模拟工具 时间 2015-09-26 23:52:00  博客园-原创精华区 原文  http://www.cnblogs.com/codingbl ...

  5. Android项目实战(四十四):浅谈Postman (网络请求调试插件)

    前言: Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件.    在项目开发中,可以依赖此工具模拟API测试. 使用详解: 各种情况Api的模拟请求的Postman使用方 ...

  6. Firefox 网络调试工具

    1.Firefox 简介 Firefox 官网下载地址 Firefox 其它下载地址 Firefox 58.0.2 for Mac,密码:346y. Firefox 36.0.4 for Mac,密码 ...

  7. PostMan --API调试工具

    https://blog.csdn.net/fxbin123/article/details/80428216

  8. Linux网络调试工具资料链接

    Dropbox: https://huoding.com/2016/12/15/574 Tcpdump: http://roclinux.cn/?p=2474

  9. TCPUDPDbg(TCP UDP 网络调试工具)

    下载链接:https://pan.baidu.com/s/1oan44qop73X5VuBcE-rjeA  提取码:v0oa

随机推荐

  1. Express application generator的使用

    首先拷贝express官网的一篇文章: (http://expressjs.com/en/starter/generator.html ) Express application generator ...

  2. 自然语言处理哪家强?【36kr】

    语音交互事关未来,国内外已经不少公司在抢蛋糕了,大公司收购.投资.合作不断,就可见一斑.目前,基本上所有的巨头都有涉足. 苹果收购 Siri.Novauris,组建基于神经网络算法的语音识别团队 20 ...

  3. 【原】【BG】-一次虚拟化环境实践简要记录

    部分涉及到Linux.Nginx.tomcat.MySQL等的点滴操作记录,时间长了,就忘掉了,偶尔整理一下操作的history,就此简要备份一下: [原][BG]-一次虚拟化环境实践简要记录: ht ...

  4. Internet传输协议-TCP

    http://phei.eefocus.com/book/08-07/473781276058574.html http://www.eefocus.com/communication/210643 ...

  5. mysql标准写法及其他常见问题

    /* Navicat MySQL Data Transfer Source Server : localhost_3306 Source Server Version : 50549 Source H ...

  6. ES6学习笔记二:各种扩展

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/7242967.html 一:字符串扩展 1:字符串遍历器 for (let char of str) { // ...

  7. 单链表Java实现

    近期在复习基本数据结构,本文是单链表的Java实现,包含对单链表的实现插入删除查找遍历等.最后还实现了单链表的逆置. 实现了多项式相加,多项式相乘. 原文章及完整源码在这里 http://binhua ...

  8. Cocos2d-x-Lua演示样例项目HelloLua

    Cocos2d-x-Lua演示样例项目HelloLua 本篇博客介绍Cocos2d-x中Lua的实例项目,就是使用Cocos2d-x创建的初始项目执行所呈现的农场,这里笔者取名为HelloLua.本篇 ...

  9. http://blog.csdn.net/u011277123/article/details/53665302

    导读:Oracle中,除Exp命令可进行一般的全库.全用户导出外,还可通过增加相关参数条件实现对部分库表或数据的导出. 测试环境 在如下图的测试环境中,当前登录用户名为“jck”,该用户下有200多张 ...

  10. maven project创建填充项

    GroupID是项目组织唯一的标识符,实际对应JAVA的包的结构,是main目录里java的目录结构. ArtifactID就是项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称. 一般Gr ...