jmeter.util.BeanShellInterpreter:调用bsh方法时出错:eval在文件中:内联评估:''遇到了#34;,"第1栏第9栏

时间:2017-03-29 11:45:23

标签: jmeter

我在一个位置上有一个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

请建议。

问候。

1 个答案:

答案 0 :(得分:1)

不要将诸如${InvoiceDataFile}之类的JMeter变量或函数内联到Beanshell脚本体中,它们可能会解析成会导致语法错误的内容。正确的Beanshell等效函数如下所示:

vars.put("CheckInvoice", org.apache.commons.io.FileUtils.readFileToString(new File(vars.get("InvoiceDataFile")),"UTF-8"));

展望未来,您可以采取以下步骤,以便了解Beanshell脚本失败的基础:

  1. 在脚本开头添加debug();指令。这样您就可以在STDOUT中看到调试输出
  2. 将您的代码放在try block

    try {
       //your code here
    }
    catch (Throwable ex) {
       log.error("Failed in Beanshell", ex);
       throw ex;
    }
    

    这样,您将在 jmeter.log 文件中看到“良好”的错误堆栈跟踪。

  3. 有关JMeter中Beanshell脚本的详细信息,请参阅How to Use BeanShell: JMeter's Favorite Built-in Component