我在jmeter中创建一个测试运行,在某一点上使用json提取器从json中提取字符串列表,并且应该使用逗号分隔符连接此列表,以便在其他请求中重用为参数。
问题是我无法找到一种方法将所有字符串连接起来,因为JMeter只为每个用户(线程)返回一个项目。
有没有办法实现这个目标?
答案 0 :(得分:0)
在请求之后添加Beanshell后处理器,您将使用提取器提取数据并放置:
try {
List<String> perUserSubmissionTickets = (List<String>) JMeterUtils.getJMeterProperties()
.get("jsonExtractorResultList");
perUserSubmissionTickets.add(vars.get("singleJsonExtraction"));
JMeterUtils.getJMeterProperties().put("jsonExtractorResultList");
} catch (NullPointerException e) {
List<String> perUserSubmissionTickets = new ArrayList<>();
perUserSubmissionTickets.add(vars.get("singleJsonExtraction"));
JMeterUtils.getJMeterProperties().put("jsonExtractorResultList");
}
通过这个,你创建了一个包含所有提取的vaules的List。如果你需要将它转换为由逗号分隔的所有值的字符串做类似的事情(当提取所有值时):
String commaSeparated;
for(String s : (List<String>) JMeterUtils.getJMeterProperties()
.get("jsonExtractorResultList"))
commaSeparated = commaSeparated + s + ",";
vars.put("commaSeparatedValues", commaSeparated.substring(0,str.length()-1));
在此之后你应该有一个像data1,data2,dataN
请记住在Beanshell Scripts开头声明这些导入:
import org.apache.jmeter.util.JMeterUtils;
import java.util.ArrayList;
import java.util.List;