Java 在Jmeter中动态更改JDBC配置
我需要根据环境确定表中是否有数据,例如,我有两个数据库,一个是开发,另一个是生产,如下所示Java 在Jmeter中动态更改JDBC配置,java,jdbc,jmeter,beanshell,Java,Jdbc,Jmeter,Beanshell,我需要根据环境确定表中是否有数据,例如,我有两个数据库,一个是开发,另一个是生产,如下所示 Production host1 dbuser1 dbpassword1 dburl Tablename : studentinfo Development dbuser2 dbpassword2 dburl2 Tablename : studentinfo 仅供参考:studentinfo在这两种环境中具有相同的结构 在用户定义变量(UDV)Jmeter中,我配置了两组数据库信息。使用BeanSh
Production
host1
dbuser1
dbpassword1
dburl
Tablename : studentinfo
Development
dbuser2
dbpassword2
dburl2
Tablename : studentinfo
仅供参考:studentinfo在这两种环境中具有相同的结构
在用户定义变量(UDV)Jmeter中,我配置了两组数据库信息。使用BeanShell Processor,我试图更改数据库连接信息,是否有任何方法可以动态更改数据库配置
下面给出的是我的Jmeter UDV
env : prod
prod_db_url: dburl
prod_db_user:usr
prod_db_password:password
dev_db_url: dburl
dev_db_user:usr
dev_db_password:password
在我的Beanshell预处理器中
String env=vars.get("env");
if(env.equlas("prod")){
// Load the Prod db into vars
} else if (env.equals("dev")){
// Load the Dev db into vars
}
在这里,我在vars中设置值,并试图从DB配置变量中获取信息。但我无法在DB配置中获取值
有人能解释一下吗?出现了什么问题,或者连接的方法是什么?您不需要Beanshell预处理器 对于以下UDV
env : prod
prod_db_url: dburl
prod_db_user:usr
prod_db_password:password
dev_db_url: dburl
dev_db_user:usr
dev_db_password:password
只需更改env的值,就可以使用
${{env(${env}}{db\u url)}
//返回prod或dev db url取决于env的值
另一个不错的解决方案: 您可以拥有相同的变量并将它们存储在两个不同的属性文件中吗 生产项目
db_url=dburl
db_user=usr
db_password=password
db_url=dburl
db_user=usr
db_password=password
开发属性
db_url=dburl
db_user=usr
db_password=password
db_url=dburl
db_user=usr
db_password=password
您可以使用JMeter-
属性读取器文件路径应为/path/to/${env}。属性
使用
${{{uu P(db\u url)}
,${{uu P(db\u user)}
,JDBC连接配置在用户定义的变量之后初始化,但在任何预处理器之前初始化,这就是为什么看不到值更改的原因
考虑使用JMeter属性而不是JMeter变量,即将JDBC连接配置中的${dburl}
更改为${{p(dburl,)}
。对凭据变量执行相同的操作
根据您运行测试的方式,您可以设置属性值:
-J
命令行参数,如:
jmeter -Jdburl=jdbc://somedb:port/etc -Juser=foo -Jpassword=bar