Day14_Jmeter的数据库操作和提取数据
文章目录
1. 连接数据库
1.1 添加依赖
- 把mysql-connector-java-5.1.49.jar包放在jmeter安装目录apache-jmeter-5.4.3\lib\ext目录下,重启jmeter.
1.2 创建数据库连接池
1.3 配置数据库连接
1.4 发起数据库请求
- 线程组->添加->取样器->jdbc request
1.5 调试后置处理程序
- 新建后置处理, 用于调试数据库连接的响应信息, 获取数据的变量名用于取值
1.6 遍历数据库
1.6.1 用ForEach控制器遍历数据库
- 线程结构
- 新建ForEach控制器
- 配置ForEach控制器
- 在http请求中使用数据库参数
- 执行结果
1.6.2 循环控制器和计数器遍历数据库
- 线程结构
- 连接数据库查询多列数据
- 新建循环控制器
- 循环次数为最大id值
- 添加计数器
- 设置计数器
- 使用函数生成器对话框生成v函数 - v函数用于变量嵌套变量
- 添加java请求
- java请求响应结果
- 最后发起http请求
2. 同一个线程组内提取数据
2.1 json提取
- 例: 查询所有用户 --(数据的提取)-> 查询投资记录
- 获取所要提取数据的json路径
- 在请求中, 新建后置处理器->json提取器
- 设置json提取器
- 两个请求
2.2 正则提取
2.3 提取数据(列表)
- 将正则提取器的匹配数字改为-1(获取所有数据)
- 新建调试后置处理程序, 用于查看数据的参数名
- 新建foreach控制器循环操作每一个提取出来的数据
- 发起请求
![]](https://img-blog.csdnimg.cn/242391ee42914149a244426db30e5593.png)
3. 不同线程组提取数据
3.1 给第一个线程组添加BeanShell后置处理器
- 第一个线程组:查询所有用户,提取第一个用户的电话
- 第二个线程组:充值, 此时的phone变量为局部变量
- 保证线程的执行顺序(先第一个再第二个)
- 响应结果是第二个线程组并不能获取第一个线程组提取的数据
- 这是因为: json提取器或者正则表达式提取器的变量值是局部变量,只能在当前线程组使用,如果想跨线程组使用,需要把局部变量转为全局变量。
- 步骤:
- 给第一个线程组的请求添加BeanShell后置处理器
- 设置BeanShell, 将局部变量设置为全局变量
- 但是第二个线程组依然获取不到BeanShell中的全局变量, 因为线程组默认使用局部变量, 因此需要用到P函数
- 查看结果
3.2 给第二个线程组添加BeanShell前置处理器
- 第一个线程组不变, 给第二个线程组添加
BeanShell前置处理器
- 设置BeanShell前置处理器
- 第二个线程组的变量为BeanShell前置处理器设置的局部变量
- 查看结果
标签:
测试工具
本文转载自: https://blog.csdn.net/qq_44307086/article/details/125864844
版权归原作者 (・●・) 所有, 如有侵权,请联系我们删除。
版权归原作者 (・●・) 所有, 如有侵权,请联系我们删除。