Jmeter 循环读取数据库中所有数据,并传递请求

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/songlh1234/article/details/100554544

一、Jmeter连接数据库,首先需要下载数据库连接驱动。我用的数据库是MySQL,如果有用其他数据库的,需要下载对应驱动。驱动的版本不低于数据库的版本,否则可能连接报错。

MySQL数据驱动mysql jdbc驱动包下载地址https://dev.mysql.com/downloads/connector/j/

下载完成后,将jar包放到jmeter目录中D:\JMeter\apache-jmeter-5.1.1\lib\ext下,然后重启jmeter

二、连接数据库,添加JDBC Connection Configuration

配置数据库信息

1)Variable Name不能为空,后面在数据库请求时需要用到,用来标识改请求请求哪个库

2)DataBase URL 格式为:jdbc:mysql://服务器ip:端口号/数据库

    在数据库后加参数?allowMultiQueries=true,可同时执行多条mysql语句;否则报错

3)JDBC Driver Class:com.mysql.jdbc.Driver

4)输入数据库的用户名和密码

三、创建线程组,线程组下添加JDBC Request

添加变量和查询语句,变量名“test”必须和JDBC Connection Configuration中的变量名保持一致

四、添加循环控制器,因为通过我的sql查询出的结果A、B条数是一样的,所以循环次数取AB都行。我这里写的${B_#},写成${A_#}也是没有问题的。

五、循环控制器下,添加计数器

六、计数器下添加一个简单的http请求,我这里就简单的那www.baidu.com来举例

值为什么是${__V(B_${count})}的一个写法,这里简单解释一下。这个是变量的嵌套

就是第一次我们通过sql查询,把满足结果的数据全部查询出来了。查询出来的结果其实就是A和B,${A_1}就代表查询出来的列A的第一条数据。${B_#}就是查询出来的B列的数据总数。而我们需要做的是通过一个循环控制器和计数器,来每读取到一个值,作为参数传递给发送的请求。那比如数据库中我有10条数据,${A_1}代表第一个结果,${A_2}代表第二个,${A_10}代表第十个。但是通过计数器来递增,1开始${B_#}(就是总数)结束逐一递增,这里的引用名为count,计数器计数到5,count就是5。所以我在请求的时候就需要写成${B_${count}},但是没有这种写法,所以就需要拼接。

嵌套拼接常用方法:

方法一:${__V{变量a_${变量b}}}

方法二:${__BeanShell(vars.get("变量a_${变量b}"))}

:函数${__V}用于执行嵌套函数引用

七、最后我们看一下结果

猜你喜欢

转载自blog.csdn.net/songlh1234/article/details/100554544