我在一个位置上有一个CSV文件,我正在从中读取文件中的内容。 这就是为什么我在调试采样器中添加Jmeter Bean shell后处理器和检查变量值的原因。
sccript中没有错误,并且线程成功执行并且值正在变量中。 Hiwever,在Jmeter日志中,我收到错误 -
错误 - jmeter.util.BeanShellInterpreter:调用bsh方法时出错: eval在文件中:内联评估: ``位置,广告商,产品,活动,供应商,广告订单 身份证,发票号码,。 。 。 ''遇到了#34;,"在第1栏第9栏。
我在BeanShell PostProcessor中使用了以下代码 -
${__FileToString(${InvoiceDataFile},UTF-8,CheckInvoice)}
${InvoiceDataFile}
是我在用户定义变量中定义的变量,其值是我的CSV文件所在目录的路径。
例如:
${__P(includecontroller.prefix)}/Reporting/Prisma/Prisma US/properties/ReportsVerificationUS-${__P(test.environment)}/invoice_report.csv
请建议。
问候。
答案 0 :(得分:1)
不要将诸如${InvoiceDataFile}
之类的JMeter变量或函数内联到Beanshell脚本体中,它们可能会解析成会导致语法错误的内容。正确的Beanshell等效函数如下所示:
vars.put("CheckInvoice", org.apache.commons.io.FileUtils.readFileToString(new File(vars.get("InvoiceDataFile")),"UTF-8"));
展望未来,您可以采取以下步骤,以便了解Beanshell脚本失败的基础:
将您的代码放在try block中
try {
//your code here
}
catch (Throwable ex) {
log.error("Failed in Beanshell", ex);
throw ex;
}
这样,您将在 jmeter.log 文件中看到“良好”的错误堆栈跟踪。
有关JMeter中Beanshell脚本的详细信息,请参阅How to Use BeanShell: JMeter's Favorite Built-in Component