jmeter 如何把数据库的数据依次获取作为参数传入下一个请求?

某一天碰到一个学员问了一个问题,觉得很有必要整理一篇文章出来~
image.png

因为项目的原因,假设我们要实现如下要求:
从数据库的用户表里获取用户信息,并作为参数全部传递给登录请求,分别完成登录操作。

一、jmeter 连接数据库

1、添加 JDBC Connection Configuration(右键测试计划--> 配置元件-->JDBC Connection Configuration)
2、配置数据库连接信息,其中
3、导入 MySQL 驱动包

二、添加 JDBC 请求并设置变量

1、添加线程组--> 右键线程组--> 添加 JDBC request,并做好设置

image.png

2、添加 Debug PostProcessor 用于查看变量 phone 值的获取,添加查看结果树并运行;得到以下结果。说明 jmeter 发起的 JDBC 请求及变量设置正常

image.png
image.png

三、实现循环读取库的用户信息,并传递到下一个登录请求

接下来就要思考怎么将查库得到的用户手机号,作为参数传递给下一个登录请求。这里需要引用到
ForEach 控制器

1、添加 ForEach 控制器(右键线程组--> 逻辑控制器-->ForEach 控制器),并先尝试如下设置

image.png

2、在 ForEach 控制器下添加登录请求,并进行变量引用

image.png

3、运行后,查看结果,成功从库里获取了前 6 个用户手机号,并分别成功登录

image.png

以上这种处理需要自行查库获知总共有多少个用户,再去设置 ForEach 控制器的 End index for loop 值(设置为用户总数),就可以将库里所有用户进行参数传值登录了;

问题:能不能 jmeter 自动去获知数据库表的用户数,然后去循环取值进行登录呢?

当然可以,先用 JDBC request 查出用户数,再直接对 ForEach 控制器的 End index for loop 值进行设置就 ok 了

实操:

a、添加一个 JDBC 请求,查询用户表的用户总数,并设置变量 count

image.png

b、设置 ForEach 控制器的 End index for loop 值

image.png

c、运行,查看结果成功

image.png

1 操作
potato 在 2020-08-13 10:02:30 更新了该帖
3 回帖
请输入回帖内容 ...
  • potato
  • 其他回帖
  • potato

    参考下这篇 http://lemfix.com/topics/394,看是否你要的

  • chenxiaohui

    老师你好,你上面讲到的只实现了用户名参数化,并没有将密码也参数化,但实际测试中肯定也要讲密码也参数化,请问那该怎么实现呢?