2016-11-17 61 views
0

当我尝试在BeanShell预处理器脚本中使用__FileToString内置函数时,似乎无法越过BeanShellInterpreter。 FileContents变量确实被填充,但脚本失败,我无法使用它。下面是代码和错误信息......jmeter内部函数失败BeanSHellInterpreter

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); 
} 

错误是

二○一六年十一月一十七日15点52分18秒错误 - jmeter.util.BeanShellInterpreter:错误调用BSH方法:eval在文件中:内联评估:``try {Integer count = vars.get(“SessionId”)。length() - 5; vars.put(“vAuth”,vars.get ...“遇到”:“在第5行第8列。

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

回答

0

尝试把字符串路径用双引号引起来的文件,如:

${__FileToString("C:/tmp/DeltaConnectDemoTool_3_2_0S1_5515/bin/request.txt",,FileContents)}; 
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); 
    

How to Use BeanShell: JMeter's Favorite Built-in Component一些额外的信息,脚本在JMeter的

+0

我不认为选择1会为我工作,我有多个要打开的文件(我打算为每个RESTAPI调用一个,选项2的工作方式类似于一个魅力......谢谢!PS:文档说在哪里不要在脚本主体中使用内置函数(以防万一其中有其他指针为了我)? –