Jmeter动态生成请求的JSON负载
我有一个Jmeter测试计划,希望我的HttpSampler发送一个发布请求。
请求的正文应包含Json,如下所示:
{ "productIds" : [
"p1",
"p2",
...
]
}
我已经设置了一个随机变量生成器,该变量生成器在每次调用时都返回格式正确的productId。我想做的是通过直接在请求主体中填充从生成器获取的随机pid的productId来生成有效负载。像这样(假设***是脚本转义符):
{ "productIds" : [
***
for i in (1, $productsCount) {
write("\"$randomPid\"\n")
}
***
]
}
可能吗?如果是,怎么办?如果没有,您将如何处理该问题?
谢谢!
回答:
- 将Beanshell PreProcessor添加为要参数化的请求的子代
- 将以下代码放入预处理器的“脚本”区域:
StringBuilder result = new StringBuilder(); String newline = System.getProperty("line.separator");
int max = Integer.parseInt(Parameters);
Random random = new Random();
result.append("{");
result.append("\"productIds\" : [");
result.append(newline);
for (int i = 1; i < max; i++) {
result.append("\"").append(random.nextInt()).append("\",");
result.append(newline);
}
result.append("]");
result.append(newline);
result.append("}");
vars.put("json", result.toString());
- 将您的$ {productsCount}值放入“ Parameters”节中
- 根据
${json}
需要引用生成的有效负载
请参阅如何使用BeanShell:JMeter最喜欢的内置组件指南,以获取有关Apache JMeter中Beanshell脚本的更多详细信息。
以上是 Jmeter动态生成请求的JSON负载 的全部内容, 来源链接: utcz.com/qa/418497.html