如何使用jmeter中的bean shell处理器在CSV文件中打印CSV文件输入参数?

时间:2017-05-27 12:55:24

标签: jmeter beanshell

在创建脚本以打印输入测试数据+对该数据的响应时,我遇到了一些问题。我也想打印输入测试数据,例如:

cards
98765432
98765432

结果CSV文件:应为

Cards,Results
98765432,PASS
98765432,FAIL

如何像上面一样打印?我的代码是

import java.io.File;
import org.apache.jmeter.services.FileServer;

Result = "FAIL";
Response = prev.getResponseDataAsString();

if(Response.contains("fullCardNo"))
    Result = "PASS";
fullCardNo =vars.get("fullcards");
f = new FileOutputStream("F:\\Java_Applications\\apache-jmeter-3.1\\bin\\FullCardsResults.csv",true);
p=new PrintStream(f);

this.interpreter.setOut(p);
p.println((${cards})+","+fullCardNo + "-" + Result);
f.close();
p.close();

通过上面的脚本,我的结果文件显示为空,该文件中没有数据。

2 个答案:

答案 0 :(得分:0)

我找到了答案,我的脚本中只有错误,只是我已经更改并复制,将fullCardNo =vars.get("fullcards");粘贴到Result =“FAIL”上方,如下所示,代码适用于我。< / p>

import java.io.File;
import org.apache.jmeter.services.FileServer;
cardsnumber =vars.get("cards");
Result = "FAIL";
Response = prev.getResponseDataAsString();
if(Response.contains("fullCardNo"))
    Result = "PASS";
fullCardNo =vars.get("fullcards");
f = new FileOutputStream("F:\\Java_Applications\\apache-jmeter-3.1\\bin\\FullCardsResults.csv",true);
p=new PrintStream(f);

this.interpreter.setOut(p);
p.println(cardsnumber+","+fullCardNo + "-" + Result);
f.close();
p.close();

请按照上面的代码,然后我可以在结果csv文件中打印输入变量,就像我在问题中提到的那样。

答案 1 :(得分:0)

建议尽可能避免使用脚本,因此我建议使用Sample Variables属性

假设您通过将下一行添加到 user.properties 文件(位于JMeter安装的“bin”文件夹中)来设置sample_variables属性

sample_variables=cards,fullcards

或通过-J command-line argument将它们传递给JMeter启动脚本,如:

jmeter -Jsample_variables=cards,fullcards -n -t test.jmx -l result.csv

您的result.csv文件将包含2个额外列,其中将显示${cards}${fullcards}值。有关通过属性精确调整JMeter实例的更多信息,请参阅Apache JMeter Properties Customization Guide指南。

如果您必须执行需要编写脚本的内容,请确保您使用的是效果最佳的选项,目前使用的是Groovy语言JSR223 Test Elements