Jmeter Json提取器 通过线程号来取值

谈到jmeter 数据依赖 可能大家都不陌生,就是前面请求的返回值,需要作为后面请求的参数,获取返回值 也有很多方法,比如正则匹配,JSON提取器,或者直接beanshell 写代码等等,,

但是当遇到前面一个请求的返回值时数组的时候,后面的请求需要 反复的取值的时候改怎么处理呢,

1.方法一:可以把前面请求的返回数组手动提取,放到文件里面,然后读文件作为后面请求的变量,,这个数据量小的时候可以,但是当返回的数组长度上百就比较麻烦了。

2.方法二:通过JSON提取器来取,具体方法 下面一一道来:

 

如果有下面的这样返回的请求,,items[] 是个数组,每个{}对象里面都有一个 srfkey,,需要能够循环的去取这个srfkey值

 

JSON 提取器可以这样写,items[0].srfkey 取第一个,items[1].srfkey 取第二个。。。

但是如何循环它呢,这个时候需要引入 jmeter 线程变量,,

jmeter 获取当前线程号变量:${__threadNum} 

 

这个时候 JSON 提取器,可以这样写:

 

 

通过后置处理器 beanshell 我们来打印出来看一下:

log.info("线程号: ${__threadNum}");
log.info("srfkey_v1: ${srfkey_v1}");

 

跑3个线程来做个简单测试,看到log 打印出来结果如下,(当然items[]数组下标从0开始,而线程号是从1开始,所以还得做线程号-1操作,这个就不详述):

 

 

当然也可以 通过beanshell 直接写代码来操作:

在json中{}是对象,用getJSONObject方法
[]是数组,用getJSONArray方法

通过for 循环来以此取数

 

posted @ 2021-03-31 17:39  sucre_tan  阅读(417)  评论(0编辑  收藏  举报