1

有谁知道如何在 bean shell 后处理器中创建一个数组并使其在其他线程组中可用?

我一直在寻找一段时间,但我无法解决这个问题。

谢谢

4

2 回答 2

2

无需通过写入和读取文件来完成。Beanshell 扩展机制足够聪明,可以在没有临时 3rd 方实体的情况下处理它。

简短回答:bsh.shared命名空间

长答案:

假设以下测试计划结构:

Thread Group 1 
    Beanshell Sampler 1
Thread Group 2
    Beahshell Sampler 2

将以下 Beanshell 代码放入Beanshell Sampler 1

Map map = new HashMap();
map.put("somekey","somevalue");
bsh.shared.my_cool_map = map;

以下是Beanshell Sampler 2

Map map = bsh.shared.my_cool_map;
log.info(map.get("somekey"));

运行它并查看 jmeter.log 文件。你应该看到类似的东西

2014/01/04 10:32:09 INFO  - jmeter.util.BeanShellTestElement: somevalue

瞧。

参考:

  1. 共享变量(来自 JMeter 最佳实践)
  2. 如何使用 BeanShell:JMeter 最喜欢的内置组件指南
于 2014-01-04T07:38:43.413 回答
0

根据一些建议,我是这样做的:

HTTP 请求有一个正则表达式提取器,用于从请求中提取 XPTO 变量。然后,BeanShell PostProcessor 将数据保存到 CSV 文件中:

String xpto_str = vars.get("XPTO");
log.info("Variable is: " + xpto_str);

f = new FileOutputStream("/tmp/xptos.csv", true);
p = new PrintStream(f); 
this.interpreter.setOut(p); 
print(xpto_str + ",");
f.close();

然后,在第二个线程组中,我添加了一个 CSV 数据集配置,我在其中从文件中读取变量。这真的很简单,只需阅读指南(http://jmeter.apache.org/usermanual/component_reference.html#CSV_Data_Set_Config)。

谢谢

于 2014-01-02T09:53:09.137 回答