【重点】Jmeter----- 将 JDBC Request 查询结果作为下一个接口参数方法(二)
一、说明
jmeter与数据库mysql已连接成功
二、需求
1、前置条件:
1、已user数据库的前8位手机号码作为行动计划的名称
2、行动计划的日期是2018-10-17
2、操作步骤:
1)获取到某个月份的行动计划,
2)设置参数进行循环添加行动计划
3)统计某个月份的行动计划数量
4)将行动计划标记为已完成
5)删除某个月份下所有的行动计划
3、预期结果:
行动计划添加成功,并且删除所有的某个月份下的行动计划成功
三、分析与实践
实践步骤:
1)首先添加一个jdbc connection configuration
2)添加一个jdbc request查询出user数据库的前8位mobile手机号码
3)添加一个用户自定义变量
4)确定是否查询出数据
5)提取mobile的数据
6)验证参数化是否成功
7)添加计数器
8)把mobile的值传递进去
9)设置线程数或者添加一个循环控制器
10)那我们的东西进行重新排序
1、需求:存在一个user表,表结构如下:
2、分析
1)要查询出user数据库的前8位mobile手机号码,那么首先需要建立一个jdbc request,连接本地数据库看,分别查出我们需要的mobile值
2)todo_start为了方便管理,这个值我们设置做成了一个变量,方便管理
3)查询出所有的mobile,mobile值不一定只有一个,因此我们怎么确定每次取到的值作为参数去请求下一个接口?这里需要做一个循环
4)我事先不知道能够查询出某个月份的行动计划有多少条,那如何知道我们需要循环多少次?
3、实践
1)首先添加一个jdbc connection configuration,连接的方式根据自己的数据库定
2、添加一个jdbc request查询出user数据库的前8位mobile手机号码
3、确定是否查询出数据
这个时候可以使用添加查看结果树,看看我们获取到的mobile的值,如下是获取到的结果
4、提取mobile的数据
查看jdbc request的request里面,查看底部的variable name填上你想使用的变量名,注意这个接口后面要自己用到,
5、参数化进行传递
如果直接将mobile传入${mobile}会发现请求里面mobile参数化并没有成功,那为什么会不成功呢,原来当使用 jdbc request 的结果作为参数时,要写成 ${username_0}这样子,username就是你的变量名,0 代表索引,索引是 0 就表示第一行,索引是 1 就表示第二行。
例如,我想取mobile查询结果第 4 行的数据,那我的变量值就需要写成 ${mobile_3},再看看上面mobile查询结果是怎么展示的
6、添加计数器
由于我们从第 2 行开始取值,索引是 1,所以启动填 1,每次我们往后多 1,所以递增也填 1,最大值可不填,number format 就是数字格式,如果填 000,取值是 12,那最后会显示为 012,而我们只需要本身的数字,所以就填 0,引用名称就是后面需要用的变量名
有了计数器,能递增了,那我们就需要
7、把mobile的值传递进去
我们上面说了 ${mobile_1}是取第二行,${mobile_2}是取第三行,依次类推,那我们要从第二行也就是索引等于 1 开始取,一直到最后。上一步添加的计数器就起作用了,我们设置的计数器是从 1 开始计数,每次递增 1,那么跟我们想要的完全吻合,index 就是我们设置的计数器的变量名,可以直接用他来代替我们的索引 1,2,3,4 等等,那我们现在来把mobile 和index两个变量拼接起来,这里如果你直接写成 ${umobile_index} 或者 ${mobile_${index}}都是不行的,因为两个变量不能直接拼接,需要用到一个函数 __V,不了解这个函数的可以百度看看,作用就是可以使 2 个变量可以拼在一起,所以我们拼接后的 mobile 变量应该是 ${__V(mobile_${index})}
8、设置线程数或者添加一个循环控制器
但是我们并不知道到底需要循环多少次或者需要设置多少线程数,才能让mobile刚好传完,这个时候,我们需要多加一个 jdbc request 了,来查询出我们符合条件的数据有多少条。select count("mobile") from user where id between 1 and 8;就是查询符合条件的数据总数,同理我们在 variable names 填上一个变量名,以供后面使用,这里我取 count
count 变量是我们之前查出来的所有数据的总数,这个总数是多少就说明我们需要多少线程或多少次循环。ok,那我们在 http 请求上右击,点击插入上级 – 逻辑控制器 – 循环控制器,循环次数,我们使用count 变量,由于 count变量查询出来的结果肯定只有一个,那我们可以直接取结果的第二行数据,索引是 1,即${count_mobile_1},这样就能把次数确定。这里其实不能用添加线程的方式来做,因为这几个 jdbc request 都在这个线程里,如果设置多线程,jdbc request 也会多次请求,不合理,所以我们选择更好的循环控制器
所有的东西都设置完了,就需要
9、重新进行排序后运行即可
参考链接:https://blog.csdn.net/u010978840/article/details/78227852
【重点】Jmeter----- 将 JDBC Request 查询结果作为下一个接口参数方法(二)的更多相关文章
- Jmeter将JDBC Request查询结果作为下一个接口参数方法(转载)
现在有一个需求,从数据库tieba_info表查出rank小于某个值的username和count(*),然后把所有查出来的username和count(*)作为参数值,用于下一个接口. tieba_ ...
- Jmeter将JDBC Request查询结果作为下一个接口参数方法
现在有一个需求,从数据库tieba_info表查出rank小于某个值的username和count(*),然后把所有查出来的username和count(*)作为参数值,用于下一个接口. tieba_ ...
- jmeter将JDBC Request查询出的数据作为下一个接口的参数
现在有一个需求,从数据库tieba_info表查出rank小于某个值的username和count(*),然后把所有查出来的username和count(*)作为参数值,用于下一个接口. tieba_ ...
- Jmeter中JDBC Request和BeanShell PostProcessor的结合使用(SQL模糊查询)
[前言] 今天记录一下Jmeter中JDBC Request和BeanShell PostProcessor的结合使用的方法(SQL模糊查询) [步骤] 1.下载对应数据库的驱动包到jmeter安装目 ...
- jmeter 性能测试 JDBC Request (查询数据库获取数据库数据) 的使用
JDBC Request 这个Sampler可以向数据库发送一个jdbc请求(sql语句),并获取返回的数据库数据进行操作.它经常需要和JDBC Connection Configuration配置原 ...
- 转jmeter 性能测试 JDBC Request (查询数据库获取数据库数据) 的使用
JDBC Request 这个Sampler可以向数据库发送一个jdbc请求(sql语句),并获取返回的数据库数据进行操作.它经常需要和JDBC Connection Configuration配置原 ...
- Jmeter JDBC Request 查询语句中有汉字查询结果为空的解决方法
搜索接口我会校验返回值,查询JDBC Request 查询语句有中文字的时候查询会有问题. 解决方法很简单,在JDBC Connection Configuration的Database URL里加一 ...
- Jmeter(十三) JDBC Request
Jmeter中取样器(Sampler)是与服务器进行交互的单元.一个取样器通常进行三部分的工作:向服务器发送请求,记录服务器的响应数据和记录响应时间信息 有时候工作中我们需要对数据库发起请求或者对数据 ...
- jmeter将上一个接口返回值作为下一个接口的请求参数
在jmeter中有时候会用到,将上一个接口的返回值作为下一个接口的请求参数 具体操作如下: 1.首先新建一个http请求(右键线程组--添加Sampler--http请求),同时添加好接口相应的请求参 ...
随机推荐
- Amphetamine的cf日记
之前挂上的 今天填坑 2018.2.14 #462 A 给两个集合,B分别可以从一个集合中选一个数,B想乘积最大,A想最小,A可以删除一个第一个集合中的元素,问最小能达到多少. 这题..水死啦.我居然 ...
- 排座位&&Little Elephant And Permutation——排列dp的处理
排列的问题,就是要把序列排个序,使之达到某种最优值或者统计方案数 dp可以解决部分排列问题. 通常的解决方案是,按照编号(优先级)排序决策,从左到右决策两种. 这里主要是第一个. 排座位• 有
- Linux之Makefile20160707
说一下LINUX下的Makefile,直接根据实际碰到的Makefile进行解读: 当make的目标为all时,-C $(KDIR) 指明跳转到内核源码目录下读取那里的Makefile:M=$(PWD ...
- 学习 opencv---(12)OpenCV 图像金字塔:高斯金字塔,拉普拉斯金字塔与图片尺寸缩放
在这篇文章里,我们一起学习下 图像金字塔 的一些基本概念,如何使用OpenCV函数pyrUp和pyrDown 对图像进行向上和向下采样,以及了解专门用于缩放图像尺寸的resize函数的用法.此博文一共 ...
- JSP2 特性
JSP2 新特性 1.直接配置 JSP 属性 2.表达式语言 3.简化的自定义标签 API 4.Tag 文件语法 如果要使用 JSP2 语法,web.xml 文件必须使用 Servlet2.4 以上版 ...
- 1.Android JUnit Runner(使用AndroidStudio)
一.Android JUnit Runner介绍 1.Android JUnit Runner 1)是一个测试运行器,用于运行Junit3和Junit4的Android测试包 2)替换Instrume ...
- C/C++ Volatile关键词深度剖析
文章来源:http://hedengcheng.com/?p=725 背景 此微博,引发了朋友们的大量讨论:赞同者有之:批评者有之:当然,更多的朋友,是希望我能更详细的解读C/C++ Volatile ...
- webstorm 激活破解方法大全
webstorm 作为最近最火的前端开发工具,也确实对得起那个价格,但是秉着勤俭节约的传统美德,我们肯定是能省则省啊. 方法一:(更新时间:2018/1/23)v3.3 注册时,在打开的License ...
- mysql 中delete和trncate区别
mysql中删除表记录delete from和truncate table的用法区别: MySQL中有两种删除表中记录的方法:(1)delete from语句,(2)truncate table语句. ...
- C++构造函数和析构函数顺序
构造函数 先看看构造函数的调用顺序规则,只要我们在平时编程的时候遵守这种约定,任何关于构造函数的调用问题都能解决:构造函数的调用顺序总是如下:1.基类构造函数.如果有多个基类,则构造函数的调用顺 ...