访问 MySQL 数据库的数据库 URL 的 Jmeter JDBC 连接配置参数化

Posted

技术标签:

【中文标题】访问 MySQL 数据库的数据库 URL 的 Jmeter JDBC 连接配置参数化【英文标题】:Jmeter JDBC Connection Configuration Parametrization of Database URL for accessing MySQL Database 【发布时间】:2017-11-18 10:31:30 【问题描述】:

如何在 JDBC 连接配置下参数化数据库 URL?正常的参数化在这里不起作用。

这不起作用:

Database URL: jdbc:mysql://$mysql_hostname:$mysql_port/$mysql_database
JDBC Driver Class: com.mysql.jdbc.Driver
Username: $mysql_username
Password: $mysql_username

【问题讨论】:

法线参数化是什么意思?你得到什么错误? 我在这里遇到了同样的问题。 JDBC Connection Configuration 元素内的变量不会被替换。我有人找到了解决方法,请告诉我。 【参考方案1】:

关键是JDBC Connection Configuration 测试元素正在被初始化之前 JMeter 变量所以如果你想参数化它你应该做的有点不同:

在需要的地方使用__P() function,例如:

Database URL: jdbc:mysql://$__P(mysql_hostname,):$__P(mysql_port,)/$__P(mysql_database,)
JDBC Driver Class: com.mysql.jdbc.Driver
Username: $__P(mysql_username,)
Password: $__P(mysql_password,)

相关的 JMeter 属性可以在 user.properties 文件中设置,例如:

mysql_hostname=localhost
mysql_port=3306
mysql_database=test
mysql_username=johndoe
mysql_passowrd=secret

或通过-J command-line argument 喜欢:

jmeter -Jmysql_hostname=localhost -Jmysql_port=3306 -Jmysql_database=test -Jmysql_usename=johndoe -Jmysql_password=secret

有关 JMeter 属性以及设置和覆盖它们的方法的更多信息,请参阅 Apache JMeter Properties Customization Guide

【讨论】:

这适用于从命令行运行,但不适用于 gui。这令人沮丧,因为那是您想要设置开发值的时候 这很可悲。创建 JDBC 配置后有什么方法可以修改它(使用 groovy 代码)?如果我们可以基于 CSV 文件而不是参数来配置它的属性,那就太好了。【参考方案2】:

在 Jmeter (5.1.1) 中,您可以使用“用户定义的变量”。添加-> 配置元素-> 用户定义的变量。

【讨论】:

【参考方案3】:

如果能够在 JMeter 变量之后初始化 DB 连接,那就太好了。我有一个调用数据库存储过程的 JMeter JMX。我通过 Jenkins 自动化调用 JMX。

我对多个数据库执行相同的调用。从 Jenkins 调用 JMX 一次并使用 CSV 文件让它针对多个 DB 运行要比在 Jenkins 文件中多次调用并传入不同的 DB 名称要容易得多每次通话。

另外,当我需要针对另一个数据库运行此程序时,将新数据库添加到 CSV 文件比向 Jenkins 文件添加另一个调用要容易得多。

在 Jenkins 文件中有一些可能的解决方法,但没有一个像能够从 JMeter JMX 本身中的 CSV 文件设置 JDBC 连接设置一样好或简单。

【讨论】:

以上是关于访问 MySQL 数据库的数据库 URL 的 Jmeter JDBC 连接配置参数化的主要内容,如果未能解决你的问题,请参考以下文章

Jmeter JDBC连接配置用于访问MySQL数据库的数据库URL的参数化

linux confluence 对应的url在哪

GaussDB数据库的url如何写Java连接?

eclipse用jdbc连接mysql数据库时,url是填啥?怎样找出地址?

通过访问端点 URL 停止用户输入 AJAX 数据

如何从 Heroku 访问远程 MySQL 数据库?