我尝试运行以下脚本:
import org.apache.commons.io.FileUtils; // necessary import
int lines = FileUtils.readLines(new File("${testPlanFileDir}/csv/test_smtp_save.csv")).size() - 1; // get lines count
vars.put("lines", String.valueOf(lines)); // store the count into "lines" variable
要获取我的csv中的行数,以便我可以根据CSV文件中的行数执行循环。
如果我从GUI模式运行,上面的脚本运行得很好,但是当我从终端运行时,它会抛出跟随错误。
ERROR - jmeter.util.BeanShellInterpreter: Error invoking bsh method: eval
Sourced file: inline evaluation of:
``import org.apache.commons.io.FileUtils; // necessary import int lines = FileUtil . . . ''
: Typed variable declaration : Method Invocation FileUtils.readLines
答案 0 :(得分:0)
如何获得此${testPlanFileDir}
变量值?除此之外,代码看起来不错。
如果您想了解更多相关的错误消息,可以尝试将代码放入try block:
import org.apache.commons.io.FileUtils;
try {
int lines = FileUtils.readLines(new File("${testPlanFileDir}/csv/test_smtp_save.csv")).size() - 1;
vars.put("lines", String.valueOf(lines));
}
catch (Throwable ex) {
log.error("Error in Beanshell", ex);
throw ex;
}
查看 jmeter.log 文件 - 它将包含“通常”的堆栈跟踪。
或者,您可以将debug()命令添加到Beanshell脚本的最开头 - 它会将调试输出切换为stdout
有关更多与Beanshell相关的提示和技巧,请参阅How to Use BeanShell: JMeter's Favorite Built-in Component
答案 1 :(得分:0)
将$ {testPlanFileDir}替换为:
vars.get(" testPlanFileDir&#34)
你应该避免使用Beanshell来支持嵌入在JMeter 3.0中的JSR223 + Groovy + Cache,参见:
答案 2 :(得分:0)
我用它来获取.jmx文件的当前目录。 声明可变的TestPlanFileDir为;
${__BeanShell(import org.apache.jmeter.services.FileServer; FileServer.getFileServer().getBaseDir();)}${__BeanShell(File.separator,)}