写入CSV文件的值在循环中。我只需要一根弦(Jmeter)

时间:2015-12-11 06:05:01

标签: regex csv jmeter beanshell post-processing

我编写了一个简单的beanshell脚本来获取我使用正则表达式选择的几个值,并将它们写入字符串中的CSV文件中。

nic = vars.get("NicNo01");
name = vars.get("Name01");
loanId = vars.get("Loan_Id");

f = new FileOutputStream("C:/Users/User/Desktop/scripts/Final/result.csv", true);
p = new PrintStream(f);
this.interpreter.setOut(p);
print(nic + "," + name + "," + loanId);
f.close();

数据是在一个循环中写入的,只有很少的空值,最后的字符串是我需要的正确字符串。我没有使用任何循环控制器或线程组不在循环上。这是CSV文件数据的一部分。

null,null,null
null,null,null
588583492V,A B C Fernando,null
588583492V,A B C Fernando,null
588583492V,A B C Fernando,null
588583492V,A B C Fernando,127180

为什么会出现像数据导出这样的循环?我怎样才能得到正确的最终字符串?

2 个答案:

答案 0 :(得分:1)

仅当所有变量 not null 时才写它:

nic = vars.get("NicNo01");
name = vars.get("Name01");
loanId = vars.get("Loan_Id");

if(nic == null || name == null || loanId == null)
    return;

// otherwise write to file

答案 1 :(得分:0)

如果线程数很多,由于性能问题,Beanshell可能无法正确存储数据。尝试切换到JSR223 Post Processor and use Groovy as scripting language

另一种选择可能是使用sample_variables属性。将以下行添加到 user.properties 文件(位于JMeter安装的/ bin文件夹下)

sample_variables=NicNo01,Name01,Loan_Id

并且在JMeter上重启变量值将添加到JMeter的.jtl结果文件中。