是否可以从jmeter中的文件加载一些额外的http请求参数? 我的用例是我发送给SOLR的过滤器查询参数都具有完全相同的名称,但值不同:
FQ =字段1:值1&安培; FQ =字段2:值2&安培; FQ =字段3:值3
到目前为止,bean shell脚本是:
String line = vars.get("facets");
if(line != null) {
StringTokenizer st = new StringTokenizer(line, ",");
while (st.hasMoreTokens()) {
String filterQ = st.nextToken();
String varname = "fq";
vars.put(varname,filterQ);
}
}
由于vars是一个具有唯一键的“哈希映射”类数据结构,因此不能在同一个go中提供许多fq参数。
我在考虑使用带有这些fq参数的文件,但是有人知道如何将它们附加到HTTP Request元素中配置的现有http参数吗?
UPD。总结下面的答案,这就是我所做的:
将BeanShell PreProcessor添加为HttpRequest的子代
将上述代码更改为:
String line = vars.get(“facets”);
if(line!= null){ StringTokenizer st = new StringTokenizer(line,“,”);
while (st.hasMoreTokens()) {
String filterQ = st.nextToken();
// add fq parameter and its value to the http request body
String paramName = "fq";
ctx.getCurrentSampler().addArgument(paramName, filterQ);
}
}
答案 0 :(得分:1)
为什么不修改代码以区分变量名称,例如fq1
,fq2
等。
像:
String line = vars.get("facets");
if(line != null) {
StringTokenizer st = new StringTokenizer(line, ",");
int i = 0;
while (st.hasMoreTokens()) {
String filterQ = st.nextToken();
String varname = "fq" + i;
vars.put(varname,filterQ);
i++;
}
}
顺便说一句,Beanshell不是非常推荐用于繁重的脚本编写,如果你在多个线程中生成这个代码,你应该use JSR223 Sampler and groovy language能够生成本机Java代码(Beanshell脚本引擎不是)。
答案 1 :(得分:1)
您可以使用JMeter CSV数据集元素。 这允许您通过在脚本中使用变量来加载和迭代值。
这是一个示例教程:
http://community.blazemeter.com/knowledgebase/articles/65138-using-csv-data-set-config
官方文件在这里:
http://jmeter.apache.org/usermanual/component_reference.html#CSV_Data_Set_Config