在jmeter中使用数据库表数据首先需要设置数据库连接,然后在创建JDBC取样器
1.创建配置元件
JDBC Connection Configuration 并设置连接,设置 variable name
Datebase | Driver class | Database URL |
MySQL | com.mysql.jdbc.Driver | jdbc:mysql://host:port/{dbname} |
PostgreSQL | org.postgresql.Driver | jdbc:postgresql:{dbname} |
Oracle | oracle.jdbc.driver.OracleDriver | jdbc:oracle:thin:user/pass@//host:port/service |
Ingres (2006) | ingres.jdbc.IngresDriver | jdbc:ingres://host:port/db[;attr=value] |
MSSQL | com.microsoft.sqlserver.jdbc.SQLServerDriver | jdbc:sqlserver://IP:1433;databaseName=DBname |
| 或者 | 或者 |
| net.sourceforge.jtds.jdbc.Driver | jdbc:jtds:sqlserver://localhost:1433/"+"library" |
创建JDBC Request取样器,variable name 输入上面设置的值,从而建立对应关系
设置查询结果变量名称,这部分内容执行后返回的结果内容如下图
因为列较多,产生了折行
接下来,在另一个接口中的参数可以通过jmeter的内部函数获取指定的值
${__BeanShell(vars.getObject("user_login").get(${__intSum(${index},-1)}).get("method"))}
__BeanShell是jmeter内部函数入口
vars.getObject可以获取到jmeter上下文中我们定义的变量对象
数据库的获取方式${__BeanShell(vars.getObject("param").get(n).get("colname"))}
__intSum(a,b)获取一个数据的计算求和值
数据库获取第一行下标是从0开始的,但一般我们取值会默认设置1作为开始,所以这里我们做了一个处理,把我们设置的值减1,让他从0开始计数。从列取值要指定列名
注,${index}是另外一个外部参数,设定我们要取数据表中的几行值,设置如下,可以控制获取数据行
通过以上方式我们可以将数据库表中的数据作为参数传递给待测接口