JMeter - Store/update variable/property 中的 hashmap object

JMeter - Store/update a hashmap object in a variable/property

我需要在 JSR233 sampler 内部创建一个 hash-map,它将包含某些 headers 和我将使用外部 java 实用程序调用的属性元素Java Request Sampler。我将需要创建许多散列图,因为 key-value 对会根据我正在测试的系统而有所不同。例如,我将不得不为每个 hash-map 更改 JMSReplyToJMSCorrelationID$TextBody: 字段。所有这些都是在 one 线程组中完成的,但我可能还想在以后的其他线程组中实现它。

How should I structure my Test Plan? Is it possible to create a global variable that will hold the hash-map? And then inside the respective JSR223 Sampler, for each test, modify the value of the variable?

我不知道什么时候使用属性,什么时候使用变量。在这种情况下,我希望 1 var 或 属性 在我创建新的 hash-map object 时会在整个 test-plan 中发生变化。我想知道这条路线是否可行,或者是否建议替代方案。

我想在 JMeter 中创建 HashMap object 的原因是因为我不想让 Java 实用程序读取和解析 [=] 的数千个 txt 文件40=] 对(这些值在 每个 txt 文件中有所不同)。

Instead I was wondering if there was a way to create this HashMap object in Jmeter and store it in a variable/property object that can be passed as a parameter in my Java Request.

如果有人指导我正确的方向,我将不胜感激。

而不是使用常规的 get put 操作

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

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

 vars.putObject("map", map);

稍后获取地图:

 map = vars.getObject("map");
  1. JMeter 变量是每个 JMeter 线程的本地变量,不能在不同的线程组之间共享。用于保存用户特定的值。可以从 JSR223 Elements 作为 vars 访问,请参阅 JavaDoc 了解所有可用的方法和字段。
  2. JMeter Properties are "normal" Java properties, they are global for the whole JVM 并且可以从任何线程组中的任何线程访问。

如果您有许多特定于用户的 HashMap,则假设以上 - 去寻找 JMeter 变量。如果你有一个全局 HashMap and/or 你需要从不同的线程组访问它 - 去属性。