如何用JMeter JSON Extractor提取符合条件的随机rid
JMeter JSON Extractor 配置:提取符合条件的随机rid
步骤1:添加并配置JSON Extractor
- 右键目标请求,选择「添加」→「后置处理器」→「JSON Extractor」
- 填写以下参数:
- 引用名称:
valid_rids(自定义变量前缀,后续生成的变量会以此开头) - JSON Path表达式:
$..Documents[?(@.rid != 0 && @.Name =~ /^Test.*/)]- 表达式说明:
$..Documents:遍历返回结果中所有Documents数组的元素@.rid != 0:排除rid值为数字0或字符串"0"的项@.Name =~ /^Test.*/:匹配Name字段以Test开头的项(正则^Test.*表示以Test起始,后续可接任意字符)
- 表达式说明:
- 匹配数字:
-1(设置为-1会提取所有符合条件的结果,自动生成valid_rids_1、valid_rids_2这类变量,同时valid_rids_matchNr会记录符合条件的结果总数) - 默认值:
NOT_FOUND(无符合条件结果时返回该值,便于排查问题)
- 引用名称:
步骤2:获取随机的符合条件rid
在后续需要使用rid的地方,用JMeter内置函数组合生成随机值:
${__V(valid_rids_${__Random(1,${valid_rids_matchNr},random_index)})}
- 拆解说明:
${__Random(1,${valid_rids_matchNr},random_index)}:生成1到符合条件结果总数之间的随机整数,并存入random_index变量${__V(valid_rids_${random_index})}:通过变量名拼接,取出对应位置的rid值
额外注意事项
- 如果接口返回的键名存在大小写差异(比如示例中的
rId和rid),需要修改JSON Path表达式兼容:$..Documents[?((@.rid != 0 || @.rId != 0) && @.Name =~ /^Test.*/)] - 若需要忽略
Name的大小写匹配,可给正则添加i标志:/^Test.*/i
内容的提问来源于stack exchange,提问作者Kumar
相关产品推荐
相关产品推荐

