JMeter同一POST请求内调用同一随机变量获取不同MemberID方案咨询
实现方案
方法1:调整bzm随机CSV组件配置(最简便)
- 打开你已添加的
bzm - Random CSV Data Set Config组件配置页 - 找到 Recalculate value on each call(部分汉化版本显示为「每次调用重新计算值」)选项,勾选该配置
- 保存后重新运行,同一次请求内多次引用
${MemberId}时会每次返回不同的随机取值
注意事项:
- 需保证CSV文件内的MemberID存量大于你单次请求内的引用次数,若开启了「数据用完循环读取」配置,存量不足时会出现重复取值
- 你提供的POST请求体存在JSON语法错误,多了冗余的右大括号、缺少数组元素分隔逗号,修正后的可用格式参考方法2的示例
方法2:JSR223预处理器自定义生成变量(兼容性最高)
如果方法1的配置不生效,可以通过Groovy脚本自定义取值:
- 在你的POST请求下新增「JSR223 预处理器」组件
- 在脚本输入框填入以下代码,根据实际情况修改CSV路径、需要的ID数量:
// 单次请求需要的不同MemberID数量 int idCount = 2 // 替换为你的CSV文件绝对路径,CSV每行存一个MemberID File csv = new File("C:/your/path/member_ids.csv") // 读取所有非空行后打乱顺序 List<String> allIds = csv.readLines().collect {it.trim()}.findAll {it.length() > 0} Collections.shuffle(allIds) // 存入变量,后缀对应序号 for (int i = 1; i <= idCount; i++) { vars.put("MemberId_" + i, allIds.get(i-1)) }
- 修改POST请求体,按序号引用对应变量即可:
[ { "memberExternalId": "${MemberId_1}" }, { "memberExternalId": "${MemberId_2}" } ]
内容的提问来源于stack exchange,提问作者D-Muniz
相关产品推荐
相关产品推荐

