Jmeter取数据库数据进行参数传递

1.背景

本次练习的主题是:从数据库中获取所有的用户名和密码,然后将参数传递给登录请求,进行登录。
需要了解的知识点:

1.数据库的连接及变量设置
2.循环控制器
3.配置元件Count(计数器)
4.__BeanShell()函数及基本的脚本编写
5.__V()函数的使用(用于两个变量的拼接)

2.Jmeter连接Mysql数据库

1.参考文档:http://jmeter.apache.org/usermanual/component_reference.html#JDBC_Connection_Configuration

 

Jmeter取数据库数据进行参数传递

1jmeter连接mysql数据库.png

Q:Database URL为什么添加了一串后缀呢?【?characterEncoding=UTF-8&characterSetResults=UTF-8&zeroDateTimeBehavior=convertToNull】
A:因为在我的sql语句查询出的结果中,包含了时间格式的数据时,会出现错乱,故加上这个后缀。

2.在JDBC Request中添加sql语句,设置后面要引用的变量名。

 

Jmeter取数据库数据进行参数传递

 

3.查询结果如图:

 

Jmeter取数据库数据进行参数传递

 

3.取数据库数据进行参数化

在登录时,计划通过读取数据库的数据进行参数化,将上面的11条数据都传递下去。
1.方式一:采用__BeanShell函数获取值,其中index是通过添加计数器count获取的;

${__BeanShell(vars.getObject("result").get(${__intSum(${index},-1)}).get("account"))}
${__BeanShell(vars.getObject("result").get(${__intSum(${index},-1)}).get("password"))}

 

Jmeter取数据库数据进行参数传递

 

 

2.方式二:采用__V函数拼接2个变量。2个变量的拼接,以下4种方式都是错误的:

1.${account_index}
2.${account_${index}}
3.${account}_${index}
4.${__V(${account} _${index})}

正确的方式如下:

${__V(account _${index})}

 

Jmeter取数据库数据进行参数传递

 

3.结果如图:

 

Jmeter取数据库数据进行参数传递