缘起

今天要测试一个新接口,返回值应该是现有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. 求大师点化,寻求大文件(最大20G左右)上传方案

    之前仿造uploadify写了一个HTML5版的文件上传插件,没看过的朋友可以点此先看一下~得到了不少朋友的好评,我自己也用在了项目中,不论是用户头像上传,还是各种媒体文件的上传,以及各种个性的业务需 ...

  2. CF1051F The Shortest Statement Dijkstra + 性质分析

    动态询问连通图任意两点间最短路,单次询问. 显然,肯定有一些巧妙地性质(不然你就发明了新的最短路算法了233)有一点很奇怪:边数最多只比点数多 $20$ 个,那么就可以将这个图看作是一个生成树,上面连 ...

  3. sh_02_第2个Python程序

    sh_02_第2个Python程序 print("hello")

  4. PHP导出excel文件名中文IE乱码解决

    <?php $ua = strtolower($_SERVER['HTTP_USER_AGENT']); if(preg_match('/msie/', $ua) || preg_match(' ...

  5. 基于Nginx的https服务

    1.HTTPS协议的实现 1.为什么需要HTTPS? 原因:HTTP不安全 1.传输数据被中间人盗用.信息泄露 2.数据内容劫持.篡改 对传输内容进行加密以及身份验证 2.对称加密 非对称加密 3.H ...

  6. python新动态执行 文件头标识 禁止断言

    1.exec “python语句” 2. 3.禁止断言

  7. 【MySQL】 知识点记录

    0. 定位和排查问题的常用语句 查询 正在执行的事务(这个输出有事物状态表明是否等待锁):SELECT * FROM information_schema.INNODB_TRX 查看正在锁的事务:SE ...

  8. Redis实现存取数据+数据存取

    添加依赖: <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId> ...

  9. 转: Github上关于iOS的各种开源项目集合

    https://blog.csdn.net/jiashaoying/article/details/79079500 下拉刷新 EGOTableViewPullRefresh - 最早的下拉刷新控件. ...

  10. docker学习与应用

    概要 众所周知,Docker是当前非常火的虚拟化容器技术,对于它的优势以及使用场景网上的资料非常多,这里我推荐大家去这个网站去详细学习docker. 我这里就写一下作为一名后端开发程序员,自己学习do ...