python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解


Posted in Python onJanuary 26, 2021

JDBC Request

这个 Sampler 可以向数据库发送一个 jdbc 请求(sql 语句),并获取返回的数据库数据进行操作。它 经常需要和 JDBC Connection Configuration 配置原件(配置数据库连接的相关属性,如连接名、密码 等)一起使用。

1.本文使用的是 mysql 数据库进行测试

数据库的用户名为 root,用户名密码为 *********(看个人数据库用户名和密码填写)

2、数据库中有表:test,表的数据结构如下:

python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解

表中数据如下:
select * from test (不要添加分号作为结尾。)

python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解

3、添加需要的驱动 jar 包
使用不同的数据库,我们需要引入不同的 jar 包。

方式 1:直接将 jar 包复制到 jmeter 的 lib 目录
mysql 数据库:无需引入其他数据库驱动 jar 包。

sql server 数据库:下载 sqljdbc4.jar 放到 jmeter 根目录的 lib 目录下

oracle数据库:将oracle数据的安装目录下面的\product\10.2.0\db_1\jdbc\lib\ojdbc14.jar 放 到 jmeter 根目录下的 lib 目录下

方式 2:通过 Test Plan
假如我们不使用将 jar 复制到 jmeter 的 lib 目录的方式,我们还可以使用 Jmeter 的 Test Plan 引入 相应的 jar 包,如下面引入 oracle 数据的 jar 包。

python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解

二、配置 JDBC Connection Configuration

重要参数说明:
Variable Name:

数据库连接池的名称,我们可以有多个 jdbc connection configuration,每 个可以起个不同的名称,在 jdbc request 中可以通过这个名称选择合适的连接池进行使用。

Database URL:

数据库 url,jdbc:mysql://主机 ip 或者机器名称:mysql 监听的端口号/数据库 名称, 如:jdbc:mysql://localhost:3306/test

**JDBC Driver class:**JDBC 驱动

**username:**数据库登陆的用户名

**passwrod:**数据库登陆的密码

不同数据库具体的填写方式,可以参考下面的表格:

python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解

填写后大致如下:

python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解

三、配置 JDBC Request

重要的参数说明:

Variable Name:数据库连接池的名字,需要与 JDBC Connection Configuration 的 Variable Name Bound Pool 名字保持一致

Query:填写的 sql 语句未尾不要加“;”

Parameter valus:参数值

Parameter types:参数类型,可参考:Javadoc for java.sql.Types

Variable names:保存 sql 语句返回结果的变量名

Result variable name:创建一个对象变量,保存所有返回的结果

Query timeout:查询超时时间

Handle result set:定义如何处理由 callable statements 语句返回的结果

python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解

python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解

执行到这里,我们已经将数据从数据库中原样的查出来了,但具体如何之取出我们需要的数据呢,显然, 假如我们查询的 sql 返回的只是一个数据,上面的方式已经可以满足我们的需求的,如我们查询数据的记 录数,

select count(*) from test

查询出来的结果就是我们需要的内容,或者通过正则表达式的获取即可获取我们的内容。 但假如像上面那样子,我们获取出来的是多行数据,我们需要如何来对数据进行遍历,只获取出我们 需要的数据呢?请看下面的分析。

四、JDBC Request 参数化

方法(一)、定义变量,在 sql query 中使用变量:

1、在 Test Plan 中定义一个变量(当然也可以使用参数化:Jmeter 参数化):

python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解

2、sql query 中使用${变量名}的方式引用:

python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解

方法(二)、在 sql query 中使用”?“作为占位符,并传递参数值和参数类型,如下图所示:

1、传递的参数值是常量,如图传递 2 个变量,多个变量使用” , “ 分隔。这里假如你有数据是 int 类 型的,也要在 Parameter types 那里标示为 varchar 类型,否则无法运行。

python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解

2、传递的参数值是变量,使用${变量名}的方式

python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解

五、Variables names 参数使用方法:

jmeter 官网给的解释是:如果给这个参数设置了值,它会保存 sql 语句返回的数据和返回数据的总行数。 假如,sql 语句返回 2 行,3 列,且 variables names 设置为 A,C,那么如下变量会被设置为:

A_#=2 (总行数)
A_1=第 1 列, 第 1 行
A_2=第 1 列, 第 2 行
C_#=2 (总行数)
C_1=第 3 列, 第 1 行
C_2=第 3 列, 第 2 行

如果返回结果为 0,那么 A_#和 C_#会被设置为 0,其它变量不会设置值。 如果第一次返回 6 行数据,第二次只返回 3 行数据,那么第一次那多的 3 行数据变量会被清除。 可以使用KaTeX parse error: Expected group after '_' at position 3: {A_̲#}、{A_1}…来获取相应的值

示例:我们还是用上面的数据库,把所有数据查出来,test 表有有 3 个字段,5 条记录(忘记了的可以回到 第一步那里查看)

1、添加一个jdbc request名为”参数4“,添加一个”Debug Sampler“用来查看输出的结果,设置 variables name 为 column1,column2,column3:

python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解

2、执行结果:

python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解

解析:column1 代表第一列所有的数据,column1_#可以获取到第一列的行数 column1_n:获得第一列第 n 行的数据。 column2 和 column3 的功能类似, 假如我们只需要第一列和第三列的数据,可以写成 column1,column3,中间的","不可以省略。

六、Result variable name 参数使用方法:

如果给这个参数设置值,它会创建一个对象变量,保存所有返回的结果,获取具体值的方法:columnValue = vars.getObject(“resultObject”).get(0).get(“Column Name”)

python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解

执行结果:

python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解

到此这篇关于python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解的文章就介绍到这了,更多相关python Jmeter性能测试 内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python的Django框架中settings文件的部署建议
May 30 Python
Python与R语言的简要对比
Nov 14 Python
python 同时运行多个程序的实例
Jan 07 Python
Python爬虫之UserAgent的使用实例
Feb 21 Python
Django框架验证码用法实例分析
May 10 Python
使用Python进行体育竞技分析(预测球队成绩)
May 16 Python
详解Python Matplotlib解决绘图X轴值不按数组排序问题
Aug 05 Python
django数据模型on_delete, db_constraint的使用详解
Dec 24 Python
pytorch中tensor.expand()和tensor.expand_as()函数详解
Dec 27 Python
使用keras和tensorflow保存为可部署的pb格式
May 25 Python
PyCharm上安装Package的实现(以pandas为例)
Sep 18 Python
Python reversed反转序列并生成可迭代对象
Oct 22 Python
Python数据模型与Python对象模型的相关总结
Jan 26 #Python
使用豆瓣源来安装python中的第三方库方法
Jan 26 #Python
详解用selenium来下载小姐姐图片并保存
Jan 26 #Python
selenium与xpath之获取指定位置的元素的实现
Jan 26 #Python
详解Python中的Lock和Rlock
Jan 26 #Python
5分钟快速掌握Python定时任务框架的实现
Jan 26 #Python
Python爬虫自动化爬取b站实时弹幕实例方法
Jan 26 #Python
You might like
php中使用cookie来保存用户登录信息的实现代码
2012/03/08 PHP
PHP获取ip对应地区和使用网络类型的方法
2015/03/11 PHP
php使用mysqli向数据库添加数据的方法
2015/03/20 PHP
php实现将任意进制数转换成10进制的方法
2015/04/17 PHP
php使用Jpgraph绘制简单X-Y坐标图的方法
2015/06/10 PHP
php函数mkdir实现递归创建层级目录
2016/10/27 PHP
yii2项目实战之restful api授权验证详解
2017/05/20 PHP
DWR实现模拟Google搜索效果实现原理及代码
2013/01/30 Javascript
基于Bootstrap+jQuery.validate实现Form表单验证
2014/12/16 Javascript
jquery表单验证需要做些什么
2015/11/17 Javascript
如何利用模板将HTML从JavaScript中抽离
2016/10/08 Javascript
BootStrap中jQuery插件Carousel实现轮播广告效果
2017/03/27 jQuery
JavaScript数据结构之二叉树的删除算法示例
2017/04/13 Javascript
Angular客户端请求Rest服务跨域问题的解决方法
2017/09/19 Javascript
jQuery实现点击DIV同时点击CheckBox,并为DIV上背景色的实例
2017/12/18 jQuery
vue  自定义组件实现通讯录功能
2018/09/30 Javascript
js面向对象之实现淘宝放大镜
2020/01/15 Javascript
小程序组件传值和引入sass的方法(使用vant Weapp组件库)
2020/11/24 Javascript
[01:09:50]VP vs Pain 2018国际邀请赛小组赛BO2 第二场
2018/08/20 DOTA
Python 异常处理的实例详解
2017/09/11 Python
PyQt5实现QLineEdit添加clicked信号的方法
2019/06/25 Python
PyQt5实现仿QQ贴边隐藏功能的实例代码
2020/05/24 Python
python 解决Windows平台上路径有空格的问题
2020/11/10 Python
中东地区为妈妈们提供一切的头号购物目的地:Sprii
2018/05/06 全球购物
英国奢侈品概念店:Base Blu
2019/05/16 全球购物
描述内存分配方式以及它们的区别
2016/10/15 面试题
创先争优制度
2014/01/21 职场文书
出纳工作岗位责任制
2014/02/02 职场文书
跳蚤市场口号
2014/06/13 职场文书
2014年高二班主任工作总结
2014/12/16 职场文书
《日月潭》教学反思
2016/02/20 职场文书
如果用一句诗总结你的上半年,你会用哪句呢?
2019/07/16 职场文书
十大最强格斗系宝可梦,超梦X仅排第十,第二最重格斗礼仪
2022/03/18 日漫
「回转企鹅罐」10周年纪念展「輪るピングドラム展」海报公开
2022/03/22 日漫
MySQL中rank() over、dense_rank() over、row_number() over用法介绍
2022/03/23 MySQL
MYSQL事务的隔离级别与MVCC
2022/05/25 MySQL