缘起

今天要测试一个新接口,返回值应该是现有6个接口返回值中data.CountNum之和。麻烦处有:

1.用户角色不同,接口返回值也有不同。因此要用到的接口很多。

2.要对所有接口的返回值求和,再与新接口比较。

3.需要多次测试

要解决这些问题,这次就好好用了用postman。在基本的POST/GET之外,postman能做的有很多。

准备

目前postman的chrome app版本已不再维护,推荐去官网下载客户端版本,安装即用。

开始

界面

打开页面后,可快速发起请求。postman对最常用的功能都强调显示,分别是左上角的New(新建请求),Sync(同步),Send(发送请求),满足最常见的需求,开箱即用。其实,之前用到最多的功能也就仅限于此。这次会稍微多探索一些。

参数化

问题中提到的这些请求,结构类似,参数都是三个或两个,且都有loginid,请求头中都需要包含authorization。因此自然可以用参数化,配置多处数据。一来用起来省力,再者之后统一换参数时也更为方便。

在collection处,选择更多按钮,点击Edit,选择Variables页面,即可配置参数。可填形参,初始值,当前值。之后在collection内部调用时,采用{{variable_name}}的形式(类似web框架中的模板语言)。

脚本

在request页面,选择Tests,即可编写脚本。Pre-request Script,即请求发出前会执行的脚本,而Tests中的脚本会在请求完成后执行。注意,在collection配置时,也有Tests页面,那里编写的脚本会在collection内的每个request执行后都执行一遍。

脚本采用javascript编写,可点击左下角的console按钮进行调试(快捷键是ctrl+alt+c)。postman内部的api可参考官方说明,变量可以跨请求访问,还有特殊的断言语句,用来生成测试结果。这次编写的脚本很简单,大体思路是:

1.在collection内发送第一次请求时,初始化变量total_count,用以记录各个接口返回的任务数量。

2.之后每次对接口请求后,解析出需要的数量,再将上一次的total_count加起来。这样在完成所有请求后,就能获得所有接口的任务数量之和。

3.在collection最后,对待测试接口发起请求,得到总任务数量,与total_count比较,返回测试结果。

运行

选择collection,点击运行按钮,可依次执行整个collection内的请求。执行页面可以查看测试结果。

显示为FAIL即断言未通过。

请求前生成自定义的json请求内容

代码

//请求1,2,3,4,5
pm.globals.set("total_count", 0);
res_json = JSON.parse(pm.response.json());
pm.globals.set("total_count", pm.globals.get("total_count") + res_json['data']['CountNum']);
console.log(pm.globals.get("total_count")); //请求6
res_json = JSON.parse(pm.response.json());
if( res_json.data.CountNum == null){
console.log(pm.globals.get("total_count"));
}
else
{
pm.globals.set("total_count", pm.globals.get("total_count") + res_json['data']['CountNum']);
console.log(pm.globals.get("total_count"));
} //请求7
res_json = JSON.parse(pm.response.json());
let e2e_count = res_json['data']['CountNum']; pm.test('e2e number should be equal to total count', function () {
pm.expect(e2e_count).to.equal(pm.globals.get("total_count"));
}); // Pre-request Script

  var usn = ['xxx', 'xxx', 'xxxx']
  var pwd = ['12345', '12345', '12345'] 
  var no = 0


  var encryption = CryptoJS.MD5(pwd[no]).toString();

  var body = {
    "userName": usn[no],
    "password": encryption,
    "verifyCode": pm.globals.get("verifyCode"),
    "backendKey": pm.globals.get("backEndKey")
}


  pm.globals.set('auth_req_body', JSON.stringify(body));

 

参考

postman下载地址 https://www.getpostman.com/downloads/

postman脚本介绍 https://learning.getpostman.com/docs/postman/scripts/intro_to_scripts

postman沙箱api说明 https://learning.getpostman.com/docs/postman/scripts/postman_sandbox_api_reference

Postman初探的更多相关文章

  1. Postman接口测试初探

    Postman接口测试 有两种安装方式: 1)Chrome插件(https://www.getpostman.com/).安装完成后,它会在chrome的应用中,如下图 2)通过下载Native ap ...

  2. 初探postman

    第一种:安装postman 扩展程序 第二种:本地 安装postman 登陆进来postman的界面 发送第一个postman请求 将请求保存到集合 未完,待续...

  3. SpringBoot初探之Swagger配置

    Swagger是一个用于描述和测试restful接口的工具,只要在定义restful接口时增加一些类和方法的描述注解,通过很简单的配置就可以得到一个展示接口定义页面,也可以在页面上设置参数提交测试接口 ...

  4. 使用Postman验证TFS Rest API

    概述 你可能已经了解到,TFS自2015版本发布以来,开始支持通过REST API的方式提供接口服务,第三方平台可以通过通用的HTTP协议访问TFS系统,获取数据.请求编译等.REST API在原有. ...

  5. HTTP协议初探

    HTTP协议初探 HTTP协议初探 什么是http协议? 遵守协议的双方 再来回答什么是http协议 抓到这两段文本 可以总结出以下规律 HTTP 请求命令(动作,谓词 ,METHOD) GET 和 ...

  6. Core篇——初探IdentityServer4(客户端模式,密码模式)

    Core篇——初探IdentityServer4(客户端模式,密码模式) 目录 1.Oatuth2协议的客户端模式介绍2.IdentityServer4客户端模式实现3.Oatuth2协议的密码模式介 ...

  7. Postman - 功能强大的 API 接口请求调试和管理工具

    Postman 是一款功能强大的的 Chrome 应用,可以便捷的调试接口.前端开发人员在开发或者调试 Web 程序的时候是需要一些方法来跟踪网页请求的,用户可以使用一些网络的监视工具比如著名的 Fi ...

  8. 初探领域驱动设计(2)Repository在DDD中的应用

    概述 上一篇我们算是粗略的介绍了一下DDD,我们提到了实体.值类型和领域服务,也稍微讲到了DDD中的分层结构.但这只能算是一个很简单的介绍,并且我们在上篇的末尾还留下了一些问题,其中大家讨论比较多的, ...

  9. CSharpGL(8)使用3D纹理渲染体数据 (Volume Rendering) 初探

    CSharpGL(8)使用3D纹理渲染体数据 (Volume Rendering) 初探 2016-08-13 由于CSharpGL一直在更新,现在这个教程已经不适用最新的代码了.CSharpGL源码 ...

随机推荐

  1. 为什么阿里巴巴要禁用Executors创建线程池?

    作者:何甜甜在吗 juejin.im/post/5dc41c165188257bad4d9e69 看阿里巴巴开发手册并发编程这块有一条:线程池不允许使用Executors去创建,而是通过ThreadP ...

  2. CSS3动画@keyframes图片变大变小颜色变化

    在我做公司官网的时候也会帮着写一些游戏的静态页,今天产品要求为了突出一个按钮,他要有颜色的变化而且要变大变小,然后我就在网上搜了下呼吸灯和其他的案例,写了个小damo,看着还有些魔性嘞. html: ...

  3. JavaScript实现Tab标签页切换的最简便方式

    转载请注明出处:http://www.cnblogs.com/-867259206/p/5664896.html 先说一下最土的一种方法: Html: <div class="tab- ...

  4. 使用chooseImage上传图片,不压缩,使用原图

    参考文章: https://help.aliyun.com/document_detail/92883.html

  5. Spring定时器Quartz

    <bean id="startQuertz" lazy-init="false" autowire="no" class=" ...

  6. 大数据笔记(十九)——数据采集引擎Sqoop和Flume安装测试详解

    一.Sqoop数据采集引擎 采集关系型数据库中的数据 用在离线计算的应用中 强调:批量 (1)数据交换引擎: RDBMS <---> Sqoop <---> HDFS.HBas ...

  7. 安装完Fedora 18后需要做的事情

    折腾了好久,在网上查看了好多资料,总算吧安装好的Fedora 18配置得差不多了,现在将过程记录下来,供以后查看用,同时也许还能帮助到和我遇到同一问题的朋友们,以后再有什么再继续添加吧. 一.添加 y ...

  8. clojure 语法

    Clojure 是一种运行在 Java 平台上的 LISP 方言,LISP 是一种以表达性和功能强大著称的编程语言. ; 分号作为注释的开始 ; clojure 用括号把元素括起来,元素之间用空格隔开 ...

  9. day47—JavaScript事件基础应用

    转行学开发,代码100天——2018-05-02 1.事件对象 JavaScript中事件对象通常用定义变量ev或event表示.为了兼顾浏览器兼容问题,定义事件对象为 var oEvent = ev ...

  10. HashTable 和 HashMap 区别

    hashMap去掉了HashTable 的contains方法,但是加上了containsValue()和containsKey()方法. hashTable同步的,而HashMap是非同步的,效率上 ...