如何在jmeter中处理提取器的多个匹配
我使用json路径提取器从json响应中查找多个匹配项。 并且得到了输出:如何在jmeter中处理提取器的多个匹配,jmeter,Jmeter,我使用json路径提取器从json响应中查找多个匹配项。 并且得到了输出: IDType_Extract_1={"contentType":"LIVE","id":103} IDType_Extract_2={"contentType":"CATCH_UP","id":6441631} IDType_Extract_3={"contentType":"MOVIES","id":129} 现在,我想拆分这两个值,并在下一个JMeterHTTP请求中传递任意随机的(contentType,id)对
IDType_Extract_1={"contentType":"LIVE","id":103}
IDType_Extract_2={"contentType":"CATCH_UP","id":6441631}
IDType_Extract_3={"contentType":"MOVIES","id":129}
现在,我想拆分这两个值,并在下一个JMeterHTTP请求中传递任意随机的(contentType,id)
对
我应该使用哪个后处理器以及如何提取值
我使用的是beanshell断言和beanshell后处理器,但无法提取它
string[]value=vars.get{“IDType\u Extract\u 1”}
在debug sampler中,变量中没有值。您应该使用,或者在原始JSON提取器中获取特定值,然后添加到表达式后缀。contentType
另一个选项是使用exists JMeter变量和$创建新的JSON提取器
。contentType
作为表达式:
JSON后处理器使您能够使用JSON-PATH语法从JSON响应中提取数据。这个后处理器非常类似于正则表达式提取器。它必须作为HTTP采样器或具有响应的任何其他采样器的子级放置
假设所有这些
- 添加为要参数化的请求的子级
- 将以下代码放入“脚本”区域:
- 也就是说,如果需要,请将随机提取的值引用为
和${contentType}
:${id}
string[] type = value.split{","};
def randomNumber = org.apache.commons.lang3.RandomUtils.nextInt(1, (vars.get('IDType_Extract_matchNr') as int) + 1)
def entry = new groovy.json.JsonSlurper().parseText(vars.get('IDType_Extract_' + randomNumber))
vars.put('contentType', entry.contentType)
vars.put('id', entry.id as String)