【问题标题】:Jmeter - can't pass property to JDBC connectorJmeter - 无法将属性传递给 JDBC 连接器
【发布时间】:2022-01-19 09:17:09
【问题描述】:

我有一个 setUp 线程组和一个 normal 线程组。 Jmeter 连续运行线程组。

在设置组中,我从数据库中选择一个用户名,然后将其放入带有 JSR223 采样器的属性中,如下所示:

import org.apache.jmeter.util.JMeterUtils;
JMeterUtils.setProperty("schemaProp", vars.get("schemaVar_1"));

进入第二个线程,我有一个 JDBC 连接器,它可以像这样访问属性:

${__property(sshUserProp,)}

但它不起作用。

日志

2021-12-16 08:54:58,802 DEBUG o.a.j.p.j.c.DataSourceElement: Driver: org.postgresql.Driver DbUrl: jdbc:postgresql://127.0.0.1:50539/JB7 User: sshUserProp

JDBC 连接器并没有真正看到该属性,尽管它实际上已设置,因为我可以使用另一个 JSR223 采样器访问它:

import org.apache.jmeter.util.JMeterUtils;
log.info ("------------------------- MESSAGE: " + JMeterUtils.getProperty("sshUserProp"))

日志

2021-12-16 08:54:58,961 INFO o.a.j.p.j.s.J.JSR223 Sampler: ------------------------- MESSAGE: 160116

【问题讨论】:

  • 在加载 jmx 之前必须设置 JDBC 配置值,例如使用属性文件或参数

标签: properties jmeter


【解决方案1】:

恐怕这是不可能的,至少在 JMeter 5.4.1 中是不可能的,查看JDBC Connection Configuration source code 元素是在testStarted() 函数中设置的,并根据JavaDoc

在主引擎线程开始测试之前调用。这是在克隆测试元素之前。请注意,此时并非所有测试变量都已设置。

因此,您需要以某种方式事先确定用户名,即通过运行另一个 JMeter 测试并通过 Flexible File Writer 将用户名保存到文件中,然后从文件中读取用户名使用 __StringFromFile() 函数或通过 -J 命令行参数传递用户名 - 这样您当前使用 __property() function 的方法将起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-02
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-18
    相关资源
    最近更新 更多