热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

postman中返回值提取_Postman入门第一坑:提取返回值

TestToolson2018-04-13|tags:PostmanInterfaceTestPostman是做接口测试的,但是很多接口并不是直接就能测,

Test Tools

on 2018-04-13

|

tags: Postman

Interface

Test

Postman是做接口测试的,但是很多接口并不是直接就能测,有的需要一些预处理。比如说身份认证,需要传递一个token。如果做网页测试,一般打开登陆界面的时候就会生成一个token,如果返回值是json格式,用Postman从中提取值是很简单的,在Tests中输入:

var jsonData =JSON.parse(responseBody);//获取body中返回的所有参数

pm.environment.set("appKey",jsonData.data.keys);//把返回参数中的keys设置为环境变量

postman-start-01.png?raw=true

如果token在返回的header里,也很简单:

var value = postman.getResponseHeader("Access-Token");

pm.environment.set("Access-Token",value);

postman-start-02.png?raw=true

如果token在返回值的body中,呵呵,网上并没有适合小白看的清晰的解决方法。我花了好长好长好长时间才找到这么两行小字:

//转换XML body为JSON对象

var jsonObject = xml2Json(responseBody);

那我的思路就有了:将html转换成json,再从json中提取token不就简单了。

依然还是老办法,拿出我的终极武器——redmine来测试。登陆页面的返回值大概是这样的,我们要提取的是csrf-token:

Redmine

...

一开始我觉得可能是这样取值:

pm.globals.set("token", jsonObject.html.head.meta[4].content);

为了调试方便,我们这里取全局(globals)变量,因为环境(environment)变量只有在测试执行过程中才存在,测试执行完就释放了。

send之后点右上角小眼睛,如果全局变量取到值的话这里会有显示的:

postman-start-03.png?raw=true

然而并没有,排查原因,把最后的content去掉试试(为了看的更清楚,把[4]也去掉):

var jsonObject = xml2Json(responseBody);

pm.globals.set("token", jsonObject.html.head.meta);

这时候取到全局变量了,不过[object Object],[object Object]...需要翻译啊,很明显取到meta这一层是没错的:

postman-start-04.png?raw=true

这时候需要一个将json转换成字符串的工具,方便我分析,然后就找到了JSON.stringify():

pm.globals.set("getstring", JSON.stringify(jsonObject.html.head.meta));

postman-start-05.png?raw=true

将json复制出来美化一下:

postman-start-06.png?raw=true

原来meta下一层是个$。事后才醒悟过来,name和content并不是meta的下层,而是meta的属性,xml2Json()方法将属性转换成$标记的下层。

修改之后再次测试:

pm.globals.set("token", jsonObject.html.head.meta[4].$.content);

postman-start-07.png?raw=true

完美解决。

总结

Postman从响应中提取值的方法:

从json中提取

var jsonData =JSON.parse(responseBody);

从html的Header中提取

var value = postman.getResponseHeader("Access-Token");

pm.environment.set("Access-Token",value);

从html的body中提取

var jsonObject = xml2Json(responseBody);

将json object转换成字符串的函数JSON.stringify(jsonObject)。

参考文章



推荐阅读
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 导出功能protectedvoidbtnExport(objectsender,EventArgse){用来打开下载窗口stringfileName中 ... [详细]
  • 本文介绍了一种在PHP中对二维数组根据某个字段进行排序的方法,以年龄字段为例,按照倒序的方式进行排序,并给出了具体的代码实现。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • ASP.NET2.0数据教程之十四:使用FormView的模板
    本文介绍了在ASP.NET 2.0中使用FormView控件来实现自定义的显示外观,与GridView和DetailsView不同,FormView使用模板来呈现,可以实现不规则的外观呈现。同时还介绍了TemplateField的用法和FormView与DetailsView的区别。 ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
author-avatar
百度地震姜常宏
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有