使用BSF后处理器中使用的变量作为另一个采样器中的参数

时间:2012-06-30 08:09:00

标签: javascript jmeter load-testing

我在采样器中添加了BSF后处理器 后处理器中的脚本是:

var array = JSON.parse(prev.getResponseDataAsString());

array.forEach(function(object)
{
  OUT.println("patient_id: "+object.patientId);
  OUT.println("fname: "+object.fname);
  OUT.println("lname: "+object.lname);
});

现在我想使用object.patientId,object.fname,object.lname值作为另一个请求参数中的参数。

E.g。

Thread Group
- Sampler1
    BSF Post-Processor
- Sampler2

我想将Sampler1的BSF Post Processor的javascript中的变量用作Sampler2中的参数。这可能吗?

1 个答案:

答案 0 :(得分:2)

轻松:BSF PostProcessor提供对Jmeter变量/属性的读/写访问:

  

vars - (JMeterVariables) - 提供对变量的读/写访问权限:   vars.get(键); vars.put(键,VAL); vars.putObject(“OBJ1”,new Object());   vars.getObject( “OBJ2”);

     

props - (JMeterProperties - 类java.util.Properties) - 例如   props.get( “START.HMS”); props.put( “PROP1”, “1234”);

在最简单的情况下,您可以使用

vars.put(patientId,object.patientId.toString());
vars.put(fName,object.fname.toString());
vars.put(lName,object.lname.toString());

在你的BSF PostProcessor中设置变量,然后得到像

这样的值
vars.get("patientId")

${patientId}

但是既然你在foreach循环中提取所有记录,你就不能用这种方式。

在这种情况下,您必须更好地使用以下内容:将foreach循环中提取的所有记录值写入csv文件,然后使用例如CSV Data Set Config在循环中逐个读取记录,并使用值和Sampler2:

While Controller
    CSV Data Set Config
    Sampler 2

......同样,如果我找到另一个更好的方法,我会很高兴知道它。