如何运行Jmeter负载测试,其中Http请求执行n次,每次使用不同的参数

时间:2014-03-05 11:22:36

标签: jmeter

我正在尝试运行具有以下流程的测试计划: -

1.)Http请求调用返回json数据的第一个Web服务 2.)Bean shell post处理器,用于解析响应并创建一个数组,并将其作为键值设置在vars中。 3.)(问题)对于数组中的每个元素,应该使用该数组元素作为请求的参数发送httpt请求。

Bean shell post处理器的代码是: -

import org.json.JSONArray;
import org.json.JSONObject;
import java.util.Random;

String jsonString = prev.getResponseDataAsString();
JSONObject response= new JSONObject(jsonString);
JSONArray sba=response.getJSONArray("sba");
JSONArray si_id_list=new JSONArray ();
for(int i=0;i<sba.length();i++ ){
    si_id_list.put(sba.getJSONObject(i).getString("si_id"));
}

vars.put("si_id", si_id_list.toString());

是否可以使用此数组将输入传递给另一个http请求,一次一个。

1 个答案:

答案 0 :(得分:1)

我建议修改你的Beanshell脚本如下:

import org.json.JSONArray;
import org.json.JSONObject;
import java.util.Random;

String jsonString = prev.getResponseDataAsString();
JSONObject response= new JSONObject(jsonString);
JSONArray sba=response.getJSONArray("sba");
JSONArray si_id_list=new JSONArray ();
for(int i=0;i<sba.length();i++ ){
    si_id_list.put(sba.getJSONObject(i).getString("si_id"));
    vars.put("si_id_"+i, sba.getJSONObject(i).getString("si_id"));

}

之后,您将拥有si_id_1si_id_2等变量,并保留相关的si_id值。

根据Using Regular Expressions in JMeter,您将能够利用JMeter Foreach Controller迭代JSON数组的所有成员。