首页 > 解决方案 > 避免在 Jmeter 中使用多个请求覆盖 ​​Hashmap

问题描述

我在 Jmeter 线程组中添加了一个 Beanshell 后处理器,并且在使用后处理器的同一线程组中有多个 HTTP 请求。我正在创建一个 Hashmap 并在执行每个 HTTP 请求后将值放入地图中,然后创建地图的 json 对象。问题在于,在每个 HTTP 请求之后,映射值只会被执行的最后一个 HTTP 请求的最新值替换。如何避免这种情况?

我的后处理器中的代码如下:

HashMap map = new HashMap();
map.put(extID,intID);  

object = new JSONObject(map);

vars.put("idMap" , object.toString());

JSONParser parser = new JSONParser();
JSONObject json = (JSONObject)parser.parse(vars.get("idMap"));

标签: jmeterhashmap

解决方案


JMeter 的后处理器遵守JMeter 范围规则,因此如果您将后处理器放置在与采样器相同的级别 - 后处理器将在每个采样器之后执行

如果您希望它仅在特定采样器之后执行 - 使 PostProcessor 成为此采样器的直接子级

在此处输入图像描述

另请注意,自 JMeter 3.1 起,建议使用 JSR223 测试元素和 Groovy 语言编写脚本,因此值得考虑迁移,如果需要,您无需更改任何一行代码,或者Groovy 具有内置 JSON支持


推荐阅读