我需要读取一次文件,其结果需要在采样器中进一步处理。我的策略是线程组-> BeanShell预处理器+ BeanShell采样器
我的预处理器应该为整个线程组读取一次文件,结果将在采样器中用于特定的no。(我不想读取每个线程的文件)
我用预处理器编写了文件读取器代码,现在需要在采样器中使用结果。
发布于 2015-09-16 19:00:12
现在回答:
int number = ctx.getThread().getThreadNum(); // get current thread number
props.put("value_for_thread_" + number, "foo"); // store some value specific for the specific thread
String value = props.get("value_for_thread_5"); // get value for thread 5
其中:
ctx
-是JMeterContext的缩写props
-表示JMeter属性,它是派生所有方法和字段的java.util.Properties的实例,是整个JVM实例的全局实例。有关前面提到的对象,请参阅JavaDocs以了解还可以做些什么,并通过Beanshell vs JSR223与JMeter脚本:你一直在等待的性能下降!指南了解如何安装groovy脚本引擎、脚本最佳实践以及Beanshell、JSR223+groovy和Java代码的基准测试。
发布于 2015-09-16 15:03:46
使用千分尺变量存储已读取的值,然后在后续步骤中使用它们。请注意,每次执行线程循环时,预处理器都会运行.
在beanshell预处理器中,可以存储如下变量:
vars.put("name","value")
然后访问它,作为
vars.get("name")
在任何其他采样器的字段中作为${name}
。
请注意,如果预处理器是主线程组的一部分,它将在每次线程循环时运行。如果这是一个昂贵的操作,或者在运行期间值不会更改,则可能需要使用安装线程组。
https://stackoverflow.com/questions/32606288
复制相似问题