如何在Jmeter中发送单个json请求的多个Json数据

时间:2014-05-29 17:50:25

标签: json jmeter

我希望在同一个Json请求中向我的服务发送(POST)多个数据,这是示例:

{
  "contributionRequest":{
  "contributionData":[ 
                      {"startDate":"2010-01- 01”dataItemName":"XYZ",
                       "dataItemValue":"",
                       "expireDate":"",
                       "inputScale":"",
                       "endDate":"",
                       "identifier":"MSFT",
                       "publishDate":"",
                       "trait":"",
                       "fiscalPeriod":"FY1",
                       "currency":""},

                      {"startDate":"2014-01-01”dataItemName":"ERT",
                       "dataItemValue":"",
                       "expireDate":"",
                       "inputScale":"",
                       "endDate":"",
                       "identifier":"MSFT",
                       "publishDate":"",
                       "trait":"",
                       "fiscalPeriod":"FY1",
                       "currency":"USD"}
                    ],
                    "acceptPartialRequest":true,
                    "sharingLevel":"self",
                    "uuid":"PAXTRA77385",
                    "clientDateTime":"2014-04-24T16:05:05.480Z"}
}  

我已经尝试了线程组用户/循环控制器,但是他们创建了不同的请求,问题是我想在同一个请求中加载数千条记录。在贡献者请求中,我想加载数千条记录,但它们应该都在同一个请求中

1 个答案:

答案 0 :(得分:0)

我建议使用以下解决方案之一:

解决方案1 ​​

使用单独的setUp Thread Group填充大型请求实体,将其存储到JMeter属性并将其传递给“main”线程组。这里可以使用各种方法:

一旦你有了巨大的JSON,你可以通过将其转换为JMeter Property来use it in different thread groups

解决方案2

在您的请求中添加Beanshell Pre Processor,其中包含用于构建JSON数据的代码,例如

//code to generate JSON data
JSONObject object = new JSONObject();
object.put("contributionRequest", contributionData);
....
String data = object.toJSONString();
vars.put("request", data);

然后在HTTP请求中将其称为{request}

有关通过Beanshell脚本编写的JMeter扩展的详细信息,请参阅How to use BeanShell: JMeter's favorite built-in component指南