在JMeter中,我添加了oracle服务器的配置。然后我添加了一个JDBC请求对象,并将ResultSet变量名称放到status
测试执行正常,结果显示在treeview监听器中。
我想使用变量status
并将其与字符串进行比较,但jmeter会抛出关于将arraylist转换为字符串的错误。
如何检索此变量并与While Controller中的字符串进行比较?
答案 0 :(得分:5)
只是花了一些时间来弄清楚这一点,并认为接受的答案稍有不正确,因为JDBC请求采样器有两种类型的结果变量。
您在Variable names
框中指定的地图会映射到您的查询返回的各个列,您可以通过说columnVariable_{index}
来访问这些列。
您在Result variable name
中指定的那个包含整个结果集,实际上这是一个映射到值的列表。在这种情况下,上述语法显然不起作用。
答案 1 :(得分:4)
在JMeter中使用JDBC请求返回的ResultSet变量位于for的数组中。因此,如果要使用变量status
,则必须将其与索引一起使用。如果要使用第一个(或仅限)记录用户status_1
。所以你需要像status_{index}
一样使用它。
答案 2 :(得分:2)
String host = vars.getObject("status").get(0).get("option_value");
print(host);
log.info("----- " + host);
表格完整信息阅读"黄色框"在这个链接: http://jmeter.apache.org/usermanual/component_reference.html#JDBC_Request
其他实用例子: http://jmeter.apache.org/usermanual/build-db-test-plan.html
答案 3 :(得分:0)
您可以在JSR233 PostProcessor
中使用Beanshell / Groovy(相同的代码工作方式)来处理JDBC Request中的“结果变量名称”,如下所示:
ArrayList results = vars.getObject("status");
for (HashMap row: results){
Iterator it = row.entrySet().iterator();
while (it.hasNext()){
Map.Entry pair = (Map.Entry)it.next();
log.info(pair.getKey() + "=" + pair.getValue());
}
}
使用选择的定界符添加到字符串中,而不是将输出记录到日志中。