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


问题内容

我有一个添加到采样器的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值作为参数。

例如

Thread Group
- Sampler1
    BSF Post-Processor
- Sampler2

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


问题答案:

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

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

道具-(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数据集配置(CSV Data Set
Config)
在循环中逐一读取记录,并将值与您的Sampler2:

While Controller
    CSV Data Set Config
    Sampler 2

…同样,如果我找到另一种更好的方法,我将很高兴知道。