【发布时间】:2017-04-26 15:30:15
【问题描述】:
我正在尝试从同一线程组中的 3 个不同 HTTP 请求中打印 3 个变量。 我在 Jmeter 中写了以下 BeanShell:
try {
hash1 = vars.get("var_Hash_1");
hash2 = vars.get("var_Hash_2");
hash3 = vars.get("var_Hash_3");
FileWriter fstream = new FileWriter("/tmp/result.txt",true);
BufferedWriter out = new BufferedWriter(fstream);
out.write(hash1);
out.write(",");
out.write(hash2);
out.write(",");
out.write(hash3);
out.write(",");
out.write("\n");
out.close();
fstream.close();
}
catch (Throwable e) {
log.error("Errror in Beanshell", e);
throw e;
}
例外是:
2017/04/26 16:16:25 警告 - jmeter.extractor.BeanShellPostProcessor:BeanShell 脚本 org.apache.jorphan.util.JMeterException 中的问题:调用 bsh 方法时出错:eval 源文件:内联评估:``try { hash1 = vars.get("var_Hash_1"); hash2 = vars.get("var_Hash_2");哈希3 = va 。 . . '' : 目标错误
有趣的是,如果我尝试只写入 hash1 和 hash2,则会发生相同的异常,但是会在 result.txt 文件中写入一些内容(hash1,hash2) hash1,hash2,hash3 什么都没有写出来。
当我执行 3 个类似的请求并且它们成功时,所有 3 个变量都应该存在。有什么想法吗?
已编辑:来自异常的日志文件:
2017/04/26 17:30:29 ERROR - jmeter.util.BeanShellTestElement: Errror in Beanshell java.lang.NullPointerException
at java.io.Writer.write(Writer.java:127)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at bsh.Reflect.invokeMethod(Reflect.java:134)
at bsh.Reflect.invokeObjectMethod(Reflect.java:80)
at bsh.Name.invokeMethod(Name.java:858)
at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:75)
at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:102)
at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47)
at bsh.BSHBlock.evalBlock(BSHBlock.java:130)
at bsh.BSHBlock.eval(BSHBlock.java:80)
at bsh.BSHBlock.eval(BSHBlock.java:46)
at bsh.BSHTryStatement.eval(BSHTryStatement.java:86)
at bsh.Interpreter.eval(Interpreter.java:645)
at bsh.Interpreter.eval(Interpreter.java:739)
at bsh.Interpreter.eval(Interpreter.java:728)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.apache.jmeter.util.BeanShellInterpreter.bshInvoke(BeanShellInterpreter.java:170)
at org.apache.jmeter.util.BeanShellInterpreter.eval(BeanShellInterpreter.java:197)
at org.apache.jmeter.util.BeanShellTestElement.processFileOrScript(BeanShellTestElement.java:151)
at org.apache.jmeter.extractor.BeanShellPostProcessor.process(BeanShellPostProcessor.java:64)
at org.apache.jmeter.threads.JMeterThread.runPostProcessors(JMeterThread.java:750)
at org.apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.java:452)
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:261)
at java.lang.Thread.run(Thread.java:745)
【问题讨论】:
-
我执行了你的代码,看来我可以将值写入文件。我只更改了这一行
FileWriter fstream = new FileWriter("C:/Projects/result.txt",true);
标签: variables jmeter beanshell