在 JMeter 中,我添加了 oracle 服务器的配置。然后我添加了一个 JDBC 请求对象并将 ResultSet 变量名放到status
.
测试执行良好,结果显示在树视图侦听器中。
我想使用该变量status
并将其与字符串进行比较,但 jmeter 抛出关于将 arraylist 转换为字符串的错误。
如何检索此变量并与 While Controller 中的字符串进行比较?
刚刚花了一些时间来解决这个问题,并认为接受的答案有点不正确,因为 JDBC 请求采样器有两种类型的结果变量。
您在框中指定的那些Variable names
映射到查询返回的各个列,您可以通过说访问这些列columnVariable_{index}
。
您在 中指定的Result variable name
包含整个结果集,实际上这是一个映射到值的列表。在这种情况下,上述语法显然不起作用。
JMeter 中随 JDBC 请求返回的 ResultSet 变量在 for of 数组中。因此,如果您想使用 variable status
,则必须将它与 index.js 一起使用。如果您想使用第一个(或唯一一个)记录 user status_1
。所以你需要像status_{index}
.
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
您可以使用 Beanshell/Groovy(相同的代码工作)JSR233 PostProcessor
来处理来自 JDBC 请求的“结果变量名称”,如下所示:
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());
}
}
使用您选择的分隔符添加到字符串,而不是输出到日志替换。