jmeter内部函数失败BeanSHellInterpreter

时间:2016-11-17 21:10:22

标签: jmeter beanshell

每当我尝试在BeanShell PreProcessor脚本中使用__FileToString内置函数时,我似乎无法通过BeanShellInterpreter。 FileContents变量确实已填充,但脚本失败,我无法使用它。这是代码和错误消息......

try {
Integer count=vars.get("SessionId").length()-5;
vars.put("vAuth", vars.get("v_username") +     vars.get("SessionId").substring(count) + ":" );
log.info("Writing a info message");
   ${__FileToString(C:/tmp/DeltaConnectDemoTool_3_2_0S1_5515/bin/request.txt,,FileContents)};

log.info("Writing a second info message");
}
catch (Throwable ex ) {
    log.error("Failed to do this or that", ex);
}

错误

   2016/11/17 15:52:18错误 - jmeter.util.BeanShellInterpreter:调用bsh方法时出错:eval文件:内联评估:``try {Integer count = vars.get(“SessionId”)。长度() - 5; vars.put(“vAuth”,vars.get ...''遇到':“第5行,第8栏。

     

2016/11/17 15:52:18 WARN - jmeter.modifiers.BeanShellPreProcessor:BeanShell脚本中的问题org.apache.jorphan.util.JMeterException:调用bsh方法时出错:eval在文件中:内联评估:`` try {Integer count = vars.get(“SessionId”)。length() - 5; vars.put(“vAuth”,vars.get ...''遇到':“第5行,第8栏。

2 个答案:

答案 0 :(得分:0)

尝试将字符串路径放在双引号文件中,例如:

${__FileToString("C:/tmp/DeltaConnectDemoTool_3_2_0S1_5515/bin/request.txt",,FileContents)};

答案 1 :(得分:0)

这就是为什么不建议将函数或变量内联到脚本体中的原因。您有两种备选方案:

  1. 使用"参数"中的功能。部分。如果函数返回一些值,您可以稍后在Beanshell代码中引用为Parametersbsh.args[0],如:

    Beanshell Parameters

  2. 在Beanshell代码中实现该功能。在您的情况下,它可以是FileUtils.readFileToString()函数:

    String FileContent = org.apache.commons.io.FileUtils.readFileToString(new File("request.txt"));
    vars.put("FileContent", FileContent);
    
  3. 有关JMeter中脚本的一些额外信息,请参阅How to Use BeanShell: JMeter's Favorite Built-in Component