6

在 JMeter 中,我添加了 oracle 服务器的配置。然后我添加了一个 JDBC 请求对象并将 ResultSet 变量名放到status.
测试执行良好,结果显示在树视图侦听器中。

我想使用该变量status并将其与字符串进行比较,但 jmeter 抛出关于将 arraylist 转换为字符串的错误。

如何检索此变量并与 While Controller 中的字符串进行比较?

4

4 回答 4

5

刚刚花了一些时间来解决这个问题,并认为接受的答案有点不正确,因为 JDBC 请求采样器有两种类型的结果变量。

您在框中指定的那些Variable names映射到查询返回的各个列,您可以通过说访问这些列columnVariable_{index}

您在 中指定的Result variable name包含整个结果集,实际上这是一个映射到值的列表。在这种情况下,上述语法显然不起作用。

于 2014-03-24T07:42:27.927 回答
4

JMeter 中随 JDBC 请求返回的 ResultSet 变量在 for of 数组中。因此,如果您想使用 variable status,则必须将它与 index.js 一起使用。如果您想使用第一个(或唯一一个)记录 user status_1。所以你需要像status_{index}.

于 2013-06-19T09:14:57.093 回答
3
 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

于 2015-09-21T00:32:34.263 回答
0

您可以使用 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());
    }
}

使用您选择的分隔符添加到字符串,而不是输出到日志替换。

于 2020-02-04T13:01:34.527 回答