【jmeter参数化--json格式非扁平化(存在嵌套)

原数据 需要参数化数据(参数化call_id、dialog):

预览参数链接

{"call_id": "8cf170ea31c04bd5a8a9ef9d69226045", "dialog": [{"text": "喂?是机主本人吗?借条", "role": "robot"}, {"text": "嗯。", "role": "user"}, {"text": "我看您在我们借条的借款已经发生逾期,一直没扣到,现在已经逾期1天,是怎么回事啊", "role": "robot"}], "label": "无还款诚意"}
{"call_id": "496c147977c7481aaa32e40f667ad3fd", "dialog": [{"text": "喂?是机主本人吗?借条", "role": "robot"}, {"text": "喂,你好。什么借条。", "role": "user"}, {"text": "不好意思,那您要是认识机主,麻烦您转告下他,借条找他,让她给我们借条回电,谢谢啊,再见", "role": "robot"}], "label": "不是本人"}
{"call_id": "2c72f0cf58474651b783139208c94b3e", "dialog": [{"text": "您好,这里是借条,您本期欠款已经逾期2天了,为了不影响您的正常使用,请您务必在今天晚上八点前归还欠款", "role": "robot"}, {"text": "喂,你好。我知道,我忙完了,我开着车呢,我明白我明白。", "role": "user"}], "label": "在忙"}

##带入参数后 json请求体示例:

{
    "trace_id": "07364cee-8c6c-4fff-8709-6dbdd2f619db",
    "call_id": "8cf170ea31c04bd5a8a9ef9d69226045",
    "dialog": [{"text": "喂?是机主本人吗?借条", "role": "robot"}, {"text": "嗯。", "role": "user"}, {"text": "我看您在我们借条的借款已经发生逾期,一直没扣到,现在已经逾期1天,是怎么回事啊", "role": "robot"}]
}

这种 存在嵌套关系的json数据 通过csv是没办法的 因为 csv仅支持扁平化的参数
当然 可以通过 ‘用户参数’ 但是 如果有100条、1000条 甚至更多呢 这种方式变不可取了
在这里插入图片描述

解决办法:

思路
1、把原数据当做请求头发送一个请求
2、利用正则在请求头中 提取想要的数据
3、通过forEach控制器和计数器对提取的参数进行遍历并发送请求

先来一张整体接口图(仅一次控制器不需要 需要使用的话 自行添加):

在这里插入图片描述

步骤一:

1、把原数据存放在一个txt文本或者json文件中 然后存放到jmeter的bin目录下(推荐txt,jsonp怕 正则取不到。 大佬的话就根据自己的喜好来就好啦)
在这里插入图片描述
2、测试计划线面 添加线程组、HTTP信息头管理器
在这里插入图片描述
在这里插入图片描述

3、通过函数助手 读取参数文件 并 写入HTTP信息头管理器中
在这里插入图片描述
在这里插入图片描述
4、线程组下面 随便创建一个请求 (我这里写的百度) 并添加查看结果树
添加-取样器-http请求;添加-监听器-查看结果树
运行 在请求-Request Headers中查看 原数据是否被成功引入
在这里插入图片描述

步骤二:

1、引用成功后 我们使用正则表达式进行数据提取**
添加-后置处理器-正则表达式提取器
添加-取样器-Debug Sampler(取样器)
选择:Request Headers
call_id正则:“call_id”: "(.?)"
dialog:正则:“dialog”: (.
?), “label”:
正则验证:在这里插入图片描述
在这里插入图片描述
清空 在运行一遍脚本 查看是否提取到全部数据
在这里插入图片描述
在这里插入图片描述
到此 想要的数据已经全部提取完成

步骤三:

3、使用提取的变量
添加-逻辑控制器-ForEach控制器
添加-配置原件-计数器(要添加在 ForEach控制器下面)
添加-取样器-http请求(真正要发送的请求)
ForEach控制器只支持一个变量作为输入,如果我们需要使用多个变量作为输入变量,怎么办呢?
其它变量我们可以用__V函数和__counter函数(或计数器)来生成Debug sampler中的变量,__V函数可以处理带有内嵌变量的值,而__counter函数则可以从1递增的生成数字,如果需要设置递增值 __counter函数是不支持的 这种情况可以使用计数器。
在这里插入图片描述
在这里插入图片描述
__V函数使用:函数助手
在这里插入图片描述
V函数 结合计数器写入参数位置
在这里插入图片描述
运行查看请求参数是否全部被正确引用:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述踩坑:如果是post请求 传参一定是在消息体数据中 不要在参数里面 否则会urlEncode编码
在这里插入图片描述
在这里插入图片描述
到此 已解决完毕

JMeter是一个常强大的性能测试工具,其基本功能常强大,但是在一些场景下需要进行定制化开发,而JMeter-plugins-json插件就是为了满足这种需求而产生的一个开源插件。 JMeter-plugins-json插件主要功能是支持JMeter进行JSON格式据的转换和解析,使得JMeter可以很方便地处理JSON格式据。使用JMeter-plugins-json插件,可以将JSON据转换成CSV格式,便于JMeter进行进一步的处理和分析。此外,JMeter-plugins-json插件还支持将CSV据转换为JSON格式,方便于开发人员进行据交换。总体来说,JMeter-plugins-json插件可以为JMeter提供更加丰富的据转换和解析功能,使得JMeter在进行性能测试时更加灵活和高效。 对于JMeter-plugins-json插件的下载,可以通过官方的网站或者GitHub进行下载。在官方网站上,可以找到插件的最新版本和相关的使用说明。在GitHub上,可以找到插件的源代码和社区贡献者的讨论,可以根据需要进行自定义的开发和定制化。需要注意的是,在下载插件之前,需要进行一定的了解和研究,以确保插件的适用性和稳定性。 综上,JMeter-plugins-json插件是一个常有用的JMeter插件,可以为JMeter提供更加丰富的据处理和转换功能,提高JMeter的性能测试效率和可靠性。针对该插件的下载,需要谨慎选择,并对插件的具体应用进行深入研究和掌握。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值