list中如何计算某个key出现的次数以及通过正则关联参数化呢?
首先要通过正则提取出现key的value
举例:
jmeter的正则提取配置如下:
配置一个后置处理器Debug PostProcessor查看结果:
如图:name_23为厦门:校验结果:
说明:name_g1和name_1在于模板里配置了几个!!!!!
如果模板只有一个$1$(1个组)、$1$,$2$(2个组) 那就说明例子为1个组!!!
如图:一个组下name_23_g1 和name_23值是相同的
那如何计算在json字符串出现的次数呢?
举例:由于上面例子涉及具体公司商业信息,就随便写了 一个返回json串来说明
{"ip":"1.1.1.1","ip":"1.1.1.1","ip":"1.1.1.1","ip":"1.1.1.1","ip":"1.1.1.1","ip":"1.1.1.1","ip":"1.1.1.1","ip":"1.1.1.1","ip":"1.1.1.1","ip":"1.1.1.1,"ip":"1.1.1.1","ip":"1.1.1.1,"ip":"1.1.1.1","ip":"1.1.1.1,"ip":"1.1.1.1","ip":"1.1.1.1,"ip":"1.1.1.1","ip":"1.1.1.1}
在请求上创建一个正则表达式提取器,把响应信息全部提取到变量中如下面的截图
可以匹配文档中任何一个位置。
\s 空白符
\S 非空白符
[\s\S]任意字符
[\s\S]* 0个到任意多个字符
[\s\S]*? 0个字符,匹配任何字符前的位置。
然后创建一个beanshll前置处理器:脚本如下
import java.util.regex.Matcher; import java.util.regex.Pattern; ip = vars.get("ip"); subs = "\"ip\""; Pattern pattern = Pattern.compile(subs); Matcher matcher = pattern.matcher(ip); int count=0; while(matcher.find()){ count++; } System.out.println(count);
执行Jmeter,控制台就打印出数值了
打印的数值为 18