JMeter - 在变量/属性中存储/更新hashmap对象

时间:2017-08-15 16:12:25

标签: java hashmap jmeter jms jsr223

我需要在JSR233 sampler内部创建一个哈希映射,它将包含我将使用Java Request Sampler调用的外部java实用程序的某些头和属性元素。我将需要创建许多哈希映射,因为键值对将根据我正在测试的系统而变化。例如,我将不得不为每个哈希映射更改JMSReplyToJMSCorrelationID$TextBody:字段。所有这些都是在一个线程组中完成的,但我可能还想在其他线程组中实现它。

  

我应该如何构建我的测试计划?是否可以创建一个包含哈希映射的全局变量?然后在相应的JSR223 Sampler内,对于每个测试,修改变量的值?

我不知道何时使用属性以及何时使用变量。在这种情况下,每当我创建一个新的哈希映射对象时,我希望1 var或属性会在我的测试计划中发生变化。我想知道这条路线是否可行,或者是否建议替代方案。

我想在JMeter中创建HashMap对象的原因是因为我不想拥有Java实用程序将读取和解析键值对的数千个txt文件(这些值在< strong>每个 txt文件)。

  

相反,我想知道是否有办法创建这个HashMap   Jmeter中的对象并将其存储在可以的变量/属性对象中   在Java Request

中作为参数传递

如果有人引导我朝着正确的方向前进,我将不胜感激。

2 个答案:

答案 0 :(得分:1)

而不是使用常规的获取操作

 vars.get("map"); vars.put("map", map);

您可以对除字符串以外的对象使用get put操作:

 vars.putObject("map", map);

稍后获取地图:

 map = vars.getObject("map");

答案 1 :(得分:0)

  1. JMeter变量是每个JMeter线程的本地变量,不能在不同的线程组之间共享。用于保存特定于用户的值。可以从JSR223 Elements以vars访问,有关所有可用方法和字段,请参阅JavaDoc
  2. JMeter Properties是“普通”Java properties,它们是整个JVM的全局,可以从任何线程组中的任何线程访问。
  3. 如果您有许多特定于用户的HashMaps,请假设上述情况 - 转到JMeter变量。如果您有一个全局HashMap和/或您需要从不同的线程组访问它 - 请转到属性。