Jmeter 4.0 对返回Json处理
研究这个的目的是:如果返回信息是比较复杂的,需要对返回信息中数据以及数据的层级做断言
我找了一些我们的接口,层级关系都太简单了,最复杂的就是这两个了:【而且都是get接口,原来get接口还要增加测试点啊~^_^】
或者获取json数据的值,又如何看出层级关系呢?
说说思路吧:
1. 我以前没有考虑过这个问题,咋一问我也想不起来,想着要写beanshell来处理了吧,内心是抗拒的。但如果必须要校验,也只能慢慢研究写了;
2.研究过程中【先百度嘛^_^】,恰巧昨天看到Postman中对json数据处理逻辑,对返回信息中json数据可以如下操作,这是postman提供的功能,心里寻思着beanshell按照此逻辑一步步写,将每个第一层取出判断,再到第二层[2].xx,一层层做判断;
3. 那万一因为返回信息json内容不一样,有的返回10个元素,有的不做返回(比如null默认不返回),那岂不是要报错【看来得和开发确认好】;
4.Json默认返回,即使某个字段为null, 也是返回的,比如 name:null
try{
var jsonData = pm.response.json();
} catch (e) {
console.log("No body");
}
pm.environment.unset("fileID");
pm.environment.set("fileID", jsonData.id);
{
"resCode":"000",
"resMsg":"success",
"customerData":
{
"cardnum":"6275980334267422136",
"name":"小******",
"idcard":"3206831989********",
"mobile":"1896****440",
"address":"江苏省南通市崇川区紫琅路*****Room*****SS",
"zip":"226000",
"email":"testotest1@***",
"preferstore":"856"
}
}
{
"resCode":"000",
"resMsg":"success",
"couponData":
[
{
"coupid":3071,
"coupname":"全国券1",
"coupcontent":"<div id='print_form' class='print_form' style='display:none;'><div id='coupcontent' style='font-family:YaHei IKEA;width:300px;word-wrap:break-word;'>全国券1</div></div>",
"barcode":"1234567890",
"startdate":"2018-01-03 00:00:00",
"enddate":"2019-03-10 23:59:59",
"state":"审批通过",
"apv_status":null,
"isDefault":0
},
{
"coupid":3072,
"coupname":"全国券2",
"coupcontent":"<div id='print_form' class='print_form' style='display:none;'><div id='coupcontent' style='font-family:YaHei IKEA;width:300px;word-wrap:break-word;'>全国券2</div></div>",
"barcode":"1234567890",
"startdate":"2018-01-03 00:00:00",
"enddate":"2021-01-28 23:59:59",
"state":"审批通过",
"apv_status":null,
"isDefault":0
},
{
"coupid":3073,
"coupname":"全国券3",
"coupcontent":"<div id='print_form' class='print_form' style='display:none;'><div id='coupcontent' style='font-family:YaHei IKEA;width:300px;word-wrap:break-word;'>全国券3</div></div>",
"barcode":"1234567890",
"startdate":"2018-01-03 00:00:00",
"enddate":"2022-02-24 23:59:59",
"state":"审批通过",
"apv_status":null,
"isDefault":0
}
]
}
Step1: Jmeter自带了这个json提取器,至少我的Jmeter4.0有,之前的版本应该可以下载插件获取
元件名称:JSON Extractor
假设下面是我的返回json
{"resCode":"000","resMsg":"ok","resCardNum":"6275980334267422623"}
元件配置信息需要如下:
然后用beanshell获取这个变量验证一下:beanshell中用${定义的变量名}
加个Debug Sampler进行验证下,助于理解JSON Extractor的使用
如下是获取的返回json信息中的卡号信息:
Step2: 对于复杂的json操作
渐进明朗了,json该怎么操作就怎么操作呗,重点就是标红框的部分,下一级[1].xx获取即可
Step3: 不管是简单的json还是复杂的json,对于已经提取出来的变量进行断言,这边就用BeanShell Assertion
Step4: 刚刚看到有JSON Assertion, 好像有条新大陆了,^_^,Jmeter真是你永远都在发掘它的潜能~~
需要点击Additionally assert value,然后才能网Excepted Value下输入期望值
我随便输入了字符串bbbb和实际的卡号不符合,所有报错了~
Jmeter 4.0 对返回Json处理的更多相关文章
- JMeter 返回Json数据提取方法
JMeter中,对response返回JSON格式的数据进行处理,格式如下: { "code":2000, "message":"success&qu ...
- Spring MVC 3.0 返回JSON数据的方法
Spring MVC 3.0 返回JSON数据的方法1. 直接 PrintWriter 输出2. 使用 JSP 视图3. 使用Spring内置的支持// Spring MVC 配置<bean c ...
- SpringMVC4.0以后版本返回json格式数据问题
第一次写博文写的不好,但希望能帮助大家,有什么偏颇的地方希望大家多多斧正.在这个问题上困扰了我两天,这两天翻来覆去睡不着.一直在想这个问题.废话不多说下面进入正题. 1.创建创建web项目,加入Spr ...
- jmeter 4.0版本更新说明(个人做个记录)总版本更新合集
版本4.0 摘要 新的和值得注意的 不兼容的变化 Bug修复 改进 非功能性变化 已知问题和解决方法 谢谢 新的和值得注意的 核心改进 JMeter现在支持JAVA 9. 提供新的边界提取器元件,提供 ...
- jmeter 5.0版本更新说明(个人做个记录)
变化 此页面仅详细说明了当前版本中所做的更改. 先前更改的历史记录中详细介绍了早期更改. 5.0版 摘要 新的和值得注意的 不兼容的变化 Bug修复 改进 非功能性变化 已知问题和解决方法 谢 ...
- spring mvc返回json字符串的方式
spring mvc返回json字符串的方式 方案一:使用@ResponseBody 注解返回响应体 直接将返回值序列化json 优点:不需要自己再处理 步骤一:在spring- ...
- Struts2返回json格式数据踩坑记录
事件起因 昨天提测修改冻结/解冻银行卡样式的功能,微姐测试过程中发现调用ajax请求耗时过长,今天来排查,发现浏览器请求/finance/ajax/freeze/ajaxGetShopLists时,对 ...
- spring4mvc返回json(bean,list,map)
因为spring3和spring4的mvc在前端返回json所需要的jar包不一样,所以索性写一篇关于spring4mvc在前端返回json的博文. 首先,新建一个web项目,项目格式如图所示: co ...
- 类型转换及返回json对象的问题
@ResponseBody @RequestMapping(value="/user/getUserId.do")//method=RequestMethod.POST publi ...
随机推荐
- 机器学习理论基础学习14.1---线性动态系统-卡曼滤波 Kalman filter
一.背景 动态模型 = 图 + 时间 动态模型有三种:HMM.线性动态系统(kalman filter).particle filter 线性动态系统与HMM的区别是假设相邻隐变量之间满足线性高斯分布 ...
- sublime text3搭建react native
Sublime Text 3 搭建React.js开发环境 Sublime有很强的自定义功能,插件库很庞大,针对新语言插件更新很快,配合使用可以快速搭建适配语言的开发环境. 1. babel-subl ...
- Linux系统——MySQL基础(一)
# 数据库 ## 数据库简单的分类:(1)关系型数据库:MySQL和Oracle.Postgresql(2)非关系型数据库:Memcached和Redis(3)消息队列中间件(4)搜索引擎数据库:El ...
- uva10003
/* 2014.3.6 这题说的是给你了一根木棒 然后 n 个点(线段上的点) 然后计算 在这 n个点上都切下去的 最小花费 举个例子 100 3 25 50 75 如果 从 25 开始切 然后切 5 ...
- jstat命令查看jvm的GC情况
jstat命令可以查看堆内存各部分的使用量,以及加载类的数量.命令的格式如下: jstat [-命令选项] [vmid] [间隔时间/毫秒] [查询次数] 注意!!!:使用的jdk版本是jdk8. ...
- Python Web学习笔记之多线程编程
本次给大家介绍Python的多线程编程,标题如下: Python多线程简介 Python多线程之threading模块 Python多线程之Lock线程锁 Python多线程之Python的GIL锁 ...
- Java 第二次实验20145104 张家明
实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验步骤 (一)单元测试 ...
- 20165211 2017-2018-2 《Java程序设计》第7周学习总结
20165211 2017-2018-2 <Java程序设计>第7周学习总结 教材学习内容总结 本周,我学习了书本上第十一章的内容,以下是我整理的主要知识. 第十一章 JDBC和MySQL ...
- define和typedef
#define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错. 所以define后加分号,不然会把分号也会一 ...
- 【资源】分享一个最新版sublime 3143的注册码,亲测可用
注:请勿用作商业用途,有能力者请购买正版!!! —– BEGIN LICENSE —– TwitterInc 200 User License EA7E-890007 1D77F72E 390CDD9 ...