如何在JMeter的JSON Extractor中限制选取id数量并随机提取指定个数
实现步骤
1 配置JSON Extractor
保持你当前的JSONPath表达式不变:$..MetaInputList.*.DocumentElementMetaInputId,额外调整两个配置:
- 「匹配数字」字段填写
-1:作用是提取所有匹配的结果,会自动生成documentElementMetaInputId_1、documentElementMetaInputId_2……格式的变量,同时生成documentElementMetaInputId_matchNr变量存储匹配到的id总数量 - 变量名称使用你当前设置的
documentElementMetaInputId即可
2 添加JSR223后置处理器生成随机id列表
在JSON Extractor所在请求的下级添加JSR223后置处理器,把以下Groovy代码粘贴到脚本区域:
// 自定义要随机提取的id数量,可根据需求改为5或其他值 def expectCount = 4 // 获取提取到的id总数量 def totalCount = vars.get("documentElementMetaInputId_matchNr") as int // 处理总数量不足的边界情况,直接取全部id def pickCount = Math.min(expectCount, totalCount) // 生成1~总数量的索引列表并打乱顺序 def indexRange = (1..totalCount).toList() Collections.shuffle(indexRange) // 按打乱后的索引取对应id def randomIds = [] for (i in 0..<pickCount) { randomIds.add(vars.get("documentElementMetaInputId_" + indexRange[i]) as int) } // 转换为JSON数组格式存入变量,可直接在后续请求中调用 vars.put("randomMetaInputIdList", new groovy.json.JsonBuilder(randomIds).toString())
3 后续请求参数直接调用变量
你需要传入id列表的请求体直接填写如下内容即可:
{ "documentElementMetaInputIdList": ${randomMetaInputIdList} }
内容的提问来源于stack exchange,提问作者Rasik
相关产品推荐
相关产品推荐

