Jmeter动态生成请求的json有效载荷

时间:2014-12-05 11:30:51

标签: json scripting jmeter

我有一个Jmeter测试计划,我希望我的HttpSampler发送一个帖子请求。

请求的主体应包含Json,如下所示:

{
  "productIds" : [
    "p1",
    "p2",
    ...
  ]
}

我已经设置了一个随机变量生成器,可以在每次调用时返回格式正确的productId。我想要做的是通过直接在请求的主体中填充从生成器中获取的随机pid的productIds来生成有效负载。类似的东西(假设***是脚本逃脱):

{
  "productIds" : [
     ***
       for i in (1, $productsCount) {
         write("\"$randomPid\"\n")
       }
     ***
  ]
}

有可能吗?如果有,怎么样?如果没有,你会如何处理这个问题?

谢谢!

1 个答案:

答案 0 :(得分:10)

  1. 添加Beanshell PreProcessor作为您要参数化的请求的子项
  2. 将以下代码放入预处理器"脚本"面积:

    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());
    
  3. 将$ {productsCount}值放入&#34;参数&#34;节
  4. 将生成的有效负载称为${json}所需的
  5. 有关Apache JMeter中Beanshell脚本的更多详细信息,请参阅How to use BeanShell: JMeter's favorite built-in component guide