我对 Jmeter 很陌生,我想知道是否有某种方法可以将查询结果存储在全局变量中以在不同的线程中使用。
换句话说,我需要一个设置线程来设置数据库的开始日期和结束日期(2 个值)。然后,在第二个线程(主线程)中,我必须使用开始日期和结束日期作为测试的参数。
这可能吗?
在此先感谢!,纳韦尔
我对 Jmeter 很陌生,我想知道是否有某种方法可以将查询结果存储在全局变量中以在不同的线程中使用。
换句话说,我需要一个设置线程来设置数据库的开始日期和结束日期(2 个值)。然后,在第二个线程(主线程)中,我必须使用开始日期和结束日期作为测试的参数。
这可能吗?
在此先感谢!,纳韦尔
使用以下元素:
组织它们如下:
它将按以下方式工作:
JDBC Connection Configuration 将设置与 DB 的连接,命名变量名称,使其与 JDBC 请求的变量名称匹配,在我的情况下,我将其命名为conn
设置线程组将通过 JDBC 请求运行查询并将结果存储在变量中
Beanshell 采样器使用该值并将其存储为属性,以便所有线程共享它。
请注意以下事项:
JDBC 请求的变量名称必须与您的 SQL 查询返回的列数相匹配,注意在示例中我有 3 列,我放置了 3 个变量,并且将使用 clt_nom_1 名称,因为我确保查询只返回行
在 Bean Shell 采样器中,我输入了以下代码:
props.put("toto",vars.get("clt_nom_1"));
clt_nom_1 是这样命名的,因为它是第一行的值
最后在线程组中,我可以通过以下方式使用属性 toto:
${__P(toto)}
您还可以用名为的调试采样器替换 BeanShell 采样器:
${__setProperty(toto,${clt_nom_1})};
这将在属性中存储变量
我做了不同的事情:我创建了一个使用“Javascript”作为语言的 BSF PostProcesser:
var strData = prev.getResponseDataAsString(); //This is a string delimited with character return
var listData = strData.split('\n');
然后,您可以从列表数据中执行各种操作,例如vars.putObject
.
注意:它适用于 JDBC 请求的 SELECT 查询。