Jmeter 数据库测试参数化
1、JDBC Request 参数化
- 方法一、Jmeter 参数化,在 sql query 中使用变量
- Jmeter 参数化,使用 csv 参数化
- sql query 中使用 ${变量名} 引用
- 方法二、在 sql query 中使用 "?" 作为占位符,并传递参数值和参数类型
- 传递的参数值是常量,多个变量使用 "," 分隔(注意:Parameter values 中传入多个参数时,前提时 sql 中需要多个参数)
-
- 传递的参数值是变量,使用 csv 参数化 id 再使用 ${变量名} 的方式
2、Variables names 参数使用方法
- Jmeter 官网给的解释是:如果给这个参数设置了值,它会保存 sql 语句返回的数据和返回数据的总行数。假如,sql 语句返回2行,3列,且 variables names 设置为 A,B,那么如下变量会被设置为:
A_#=2 (总行数)
A_1=(第1列, 第1行)
A_2=(第1列, 第2行
B_#=2 (总行数)
B_1=(第2列, 第1行)
B_2=(第2列, 第2行)
- 如果返回结果为 0,那么 A_# 和 B_# 会被设置为 0,其它变量不会设置值。
- 如果第一次返回 6 行数据,第二次只返回 3 行数据,那么第一次多的 3 行数据变量会被清除。
- 可以使用 ${A_#}、${A_1}...获取相应的值
- 实例如下
- 添加一个 "Debug Sampler" 用来查看输出的结果,设置 variables name 为 A,B,C,D
- A 代表第一列所有的数据,A_# 可以获取到第一列的行数
- A_n:获得第一列第 n 行的数据
- 假如我们只需要第一列和第三列的数据,可以写成 A,,C ;中间的 "," 不可以省略
3、Result variable name(使用上一次查询结果作为参数)
- JDBC Request(查询所有信息)请求设置如下
- 添加 BeanShell Sampler
vars.put("新变量名",vars.getObject("变量名").get(第几个值).get("数据库表列名").toString());
- BeanShell Sampler 下面添加 JDBC Request,再通过上面的结果变量 ${re} 作为查询条件进行反验证 BeanShell Sampler 取值成功