jdbc - 带有 JDBC 结果集变量和计数器变量的 JMeter 嵌套变量引用

标签 jdbc httprequest jmeter httpresponse database-testing

我需要查询 MYSQL 数据库以获取 siteID 和 siteURL 列表。我已在 JDBC 请求的变量名称字段中指定了这些名称。

然后我创建了一个 ForEach 逻辑 Controller 来循环访问 siteURL ${siteURL_1} 直到结果中的最后一条记录,如下所示:

Input Variable Prefix: siteURL
Start Index: 0
End Index: 40
Output Variable Name: newSiteURL

然后我在 HTTP 请求的路径字段中使用它:

${newSiteURL}

这工作正常并且 HTTP 请求正在处理。

现在,我想正确命名 HTTP 请求,以便更好地索引它们。 为此,我决定使用结果集中的 siteID 字段。

为此,我创建了一个计数器变量,如下所示:

Start: 1
Increment: 1
Maximum: 40
Reference Name: siteIndex

现在,为了从相应 HTTP 请求中显示的结果中获取 siteID,我将 HTTP 请求的 Name 字段编辑为:

${siteID_"({siteIndex})"}

但是我在查看结果树中的 HTTP 请求最终仍然显示为:

${siteID_"({siteIndex})"}
${siteID_"({siteIndex})"}
${siteID_"({siteIndex})"}
${siteID_"({siteIndex})"}
${siteID_"({siteIndex})"}
...

而不是 HTTP 请求中相应 siteURL 的实际 siteID,例如:

21231
12315
21654
64574
76876
...

最佳答案

您需要更改此位:

${siteID_"({siteIndex})"}

${__V(siteID_${siteIndex})}

说明:

根据 __V function documentation

For example, if one has variables A1,A2 and N=1:

${A1} - works OK

${A${N}} - does not work (nested variable reference)

${__V(A${N})} - works OK. A${N} becomes A1, and the __V function returns the value of A1

参见Using JMeter Functions发布系列文章,了解有关如何使用有用的 JMeter 函数完成工作的更多示例。

关于jdbc - 带有 JDBC 结果集变量和计数器变量的 JMeter 嵌套变量引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24038752/

相关文章:

java - 来自数据库的行作为字符串 (JDBC)

mysql - 不使用json显示数据库中的数据

perl - 尝试发布时出现“HTTP::消息内容必须为字节”错误

C Socket写HTTP GET请求: error 400

C getline 函数不按指定读取行

performance - Jmeter 在一段时间/所需持续时间内负载测试网站

java - JTable 没有从数据库附加数据

java - 从 JNDI 连接池检索的数据库连接设置

java - 如何使用 Java 代码在 Jmeter .jmx 文件中添加正则表达式提取器和 cookie 管理器?

JMeter:分布式(远程)测试:无法远程运行测试