JMeter:将 SQL 查询结果作为变量传递

Dav*_*vid 5 jdbc jmeter

我一直在阅读论坛、Apache JMeter指南和 BlazeMeter 的The Real Secret to Building a Database Test Plan With JMeter and using JDBC Sampler In JMeter,但我仍然有点迷失。

我需要发出查询以从表中提取 Obj ID 值并将该值传递到 HTTP READ 请求中。我已经完成了以下设置:

JDBC 请求
变量名称:Pool-1
查询类型:Select 语句
查询:select distinct ObjId from dbo.CommonRuleSet where Name like '%ABC%';
Param。值:
参数。类型:
变量名称:abcObjId
结果变量名称:abcCommonRule = vars.getObject("resultObject").get(0).get("ObjId");
查询超时(秒):5000
处理结果集:存储为对象

执行结果为:
ObjId
1136682203

我试图弄清楚如何将此 ObjId 值作为变量传递以附加 URL。

HTTP 请求
数据库:port/applicationServer/../../crud/CommonRuleSet/ ????

我尝试附加使用:

  1. 变量名称值:${abcObjId}
  2. 结果变量名称:${abcResult}

每次,JMeter 都不会转换变量,从而导致解析器错误。
(例如,http://database:port/.../.../.../crud/CommonRuleSet/${abcResult})

我只是不明白如何获取成功查询的结果并将其作为变量传递给 HTTP 请求。非常感谢任何见解/启示!

Dav*_*vid 5

解决方案是:

//database:port/.../.../.../crud/CommonRuleSet/${abcObjId _1 })。

我想在发布我的问题之前我没有浏览足够的 BlazeMeter 页面。我在 JMeter 中找到了 Debugging JDBC Sampler Results 的解决方案。 解释变量名称和结果变量名称

之间的差异和用法的部分使所有的差异变得不同。我现在知道结果变量名称是 HashMap 的 ArrayList,在这种情况下我不需要它。 因此,我将结果变量名称字段从:更改为: result, 接下来,由于我想直接访问变量名称“abcObjId”,所以我将附加我的 URL 的变量从: ${abcObjId}修改为: ${abcObjId_1}。我是如此接近……如此接近…… 感谢 dmitri-t 和 Blazemeter 的人们。


abcCommonRule = vars.getObject("resultObject").get(0).get("ObjId");