我正在尝试运行具有以下流程的测试计划: -
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请求,一次一个。
答案 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_1
,si_id_2
等变量,并保留相关的si_id值。
根据Using Regular Expressions in JMeter,您将能够利用JMeter Foreach Controller迭代JSON数组的所有成员。