我在网上查了很多资料,发现jmter链接数据库的URL都是设置成固定值的。没有参数化。
当我需要使用配置文件链接不同服务器上的数据库的时候,发现无法实现。
原因在于:jmeter的元件执行优先级是配置文件最高,而配置文件内,几个用户定义的变量或者参数优先级是一致的。这就导致了JDBC Connection Configuration的地位与用户读取配置文件的地位一致。进而导致无法读取IP。
所以:
我在线程组之前增加了一个setUp Thread Group,并在里面使用BeanShell Sampler从配置文件读取IP,并将IP设置成全局变量。
${__setProperty(DatabaseHost,${sql_IP},)}
而真正的我需要使用的线程组内去调用这个全局变量:
补充说明:
上方的设置IP为全局变量建议使用元件为BeanShell PostProcessor,因为我使用其他sample时,在windown上是成功的,但是将脚本迁移到linux后,就总是会被数据库拒绝,无法读取到IP。
jdbc链接池是跨线程组的,所以在setup内最好使用后置处理器去处理变量。