博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Jmeter 4.0 对返回Json处理
阅读量:6801 次
发布时间:2019-06-26

本文共 2680 字,大约阅读时间需要 8 分钟。

研究这个的目的是:如果返回信息是比较复杂的,需要对返回信息中数据以及数据的层级做断言

我找了一些我们的接口,层级关系都太简单了,最复杂的就是这两个了:【而且都是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":"
", "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":"
", "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":"
", "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和实际的卡号不符合,所有报错了~

 

转载于:https://www.cnblogs.com/qianjinyan/p/9205142.html

你可能感兴趣的文章
(续)顺序表之单循环链表(C语言实现)
查看>>
iphone-common-codes-ccteam源代码 CCSize.m
查看>>
LeetCode OJ - Symmetric Tree && Same Tree
查看>>
通讯录设计
查看>>
课后作业
查看>>
浮点数类型转换的及其内存模型
查看>>
1090: 整数幂(多实例测试)
查看>>
配置了java环境变量后不起作用
查看>>
Swift 函数式数据结构 - 链表
查看>>
L1-011 A-B Java 部分解
查看>>
HTTP/1.1与HTTP/1.0的区别[转]
查看>>
css 引用图片 相对路径
查看>>
sql server 用户“sa”登陆失败
查看>>
DataGrid中嵌入CheckBox控件
查看>>
表单发送文件及加自定义参数
查看>>
jdk及tomcat的配置
查看>>
Android介绍以及源码编译--编译Android源码
查看>>
[C# 网络编程系列]专题十二:实现一个简单的FTP服务器
查看>>
软工个人作业4
查看>>
DOM节点树和元素树--深度遍历
查看>>