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

时间:2016-03-16 16:45:44

标签: jdbc jmeter

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

我需要发出一个查询来从表中提取Obj ID值并将该值传递给HTTP READ Request。我做了以下设置:

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

执行时导致:
ObjId
1136682203

我正在尝试弄清楚如何将此ObjId值作为变量传递以附加网址

HTTP请求
数据库:端口/ ApplicationServer的/../../污物/ CommonRuleSet /的 ????

我尝试使用附加:

  1. 变量名称值:$ {abcObjId}
  2. 结果变量名称:$ {abcResult}
  3. 每次,JMeter都不会翻译变量,从而导致解析器错误。
    (例如,http://database:port/.../.../.../crud/CommonRuleSet/ ${abcResult}

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

1 个答案:

答案 0 :(得分:2)

解决方案是:

//数据库:端口/.../.../.../污物/ CommonRuleSet / $ {abcObjId的 _1 })。

我想我在发布问题之前没有通过足够的BlazeMeter页面。我在Debugging JDBC Sampler Results in JMeter找到了解决方案。

解释变量名称和结果变量名称之间的差异和用法的部分完全不同。我现在明白结果变量名称是HashMaps的ArrayList,在这种情况下我不需要。

所以我将结果变量名称字段 abcCommonRule = vars.getObject("resultObject").get(0).get("ObjId"); 更改为:结果,

接下来,由于我想直接访问变量名称' abcObjId',我修改了附加我的网址的变量: $ { abcObjId}
to: $ {abcObjId_1}。

我太近了......太近了......

感谢dmitri-t和Blazemeter的人们。