Jmete-嵌套变量的使用(数据库组合查询多个结果变量引用)

目标

在自动化测试结束后,如何清理自动化测试结果产生的测试数据也是一个很重要的问题?

Jmeter提供计数器和循环控制器,可用于遍历处理自动化产生的测试数据

实践过程:

1.通过数据库查询出指定的数据:订单号列表,查询结果存为变量orderno

2.统计数据库查询结果的总数量:查询结果存为变量count

3.使用计数器,最大值=count(数据库查询结果总数)-à订单当前计数值变量命名为countnum

4.使用jmeter提供的嵌套函数读取orderno订单号列表值,读取格式为:${orderno_N},其中N为订单号所在的行值(第一行则为${orderno_1},第二行${orderno_2},以此类推。)

5.使用循环逻辑控制器,结合计数器依次遍历订单列表

    循环控制器的循环次数=count(数据库查询出来的订单号总数)

 

数据库

添加数据库连接配置

菜单路径:Add- Config Element-JDBC Connection Configuration

配置内容:

  1. 为数据库连接池创建变量:
  2. 数据库连接Database URL
  3. 数据库账号Username:
  4. 数据库密码Password:

具体配置可参考前面文章

添加数据库请求

菜单路径:Add-Sample-JDBC Request

  1. 查询指定订单号

A、查询指定条件下的订单号

查询指定区间范围内的数据,可使用关键字BETWEEN …AND…,具体查询语句可自行百度或让对应的开发人员提供。

B、查询结果

C、引用方法:

第一行则为${orderno_1}

第二行${orderno_2}

……以此类推

 

 

  1. 查询结果数量统计

A、统计查询结果数量:

数据库语句为:

select count(*) from (查询指定条件下的订单号的数据库查询语句) as tableA

B、统计结果

C、引用方法:${count_1}

注意事项:进行查询结果统计时,需要将查询订单号列表的SQL语句作为新的表(关键字as),否则会运行脚本会报错

 

添加计数器

Jmeter提供的计数器(counter)允许用户配置一个起点,一个最大值,增量数,循环到最大值,然后重新开始,继续这样,直到测试结束。

计数器使用long存储的值,所取的范围是2^63——2^63-1

菜单路径:Add - Config Element-counter

Staring value:计数的起始值

Increment:增量值,也就是每次增加多少,也可以叫做步长

Maximum value:计数的最大值,也就是本文数据库查询结果的统计总数:${count_1}

Jmeter嵌套函数

嵌套变量的常用方法一共有两种:

  1. 第一种:${__V{变量_${变量}}}
  2. 第二种:${__BeanShell(vars.get("变量_${变量}"))}

本文主要使用Jmeter函数助手提供“嵌套函数_V{}”,函数__V可以用于执行变量名表达式,并返回执行结果。它可以被用于执行“组合变量”使用。

数据库查询结果会形成一个列表order(如下图),此时需要通过下标号读取对应的订单号,例如:

  1. 第一行则为${orderno_1}
  2. 第二行${orderno_2}
  3. ……以此类推

通过计数器和循环控制器循环读取时,可将行标定义为一个变量,结合上面的订单号变量

嵌套函数引用结果:

${__V(orderno_${countnum},)}

嵌套变量的2种写法分别为:

添加beanshell preprocessor通过log打印出两种写法获取的结果是否正确,如下图

清理测试数据

通过数据库清理数据的途径可以有:

  1. 修改数据库,将数据修改为无效状态,例如:订单状态改为“已取消”
  2. 删除数据库,将测试数据进行删除(删除时要注意删除其他表内的数据,避免产生垃圾数据,影响真实测试小郭)

本文以最简便的“修改数据库”方式来清理自动化产生的测试数据。

菜单路径:Add-Sample-JDBC Request

添加循环控制器

通过jmeter提供的逻辑循环控制器,循环遍历订单号列表,逐一清楚指定的订单数据。

菜单路径:Add-Logic Controller- Controller

1.指定循环控制器的循环次数=数据库查询结果的统计总数${count_1}

  1. 将清除数据的JDBC request请求添加到逻辑控制器(Loop Controller)下

运行结果

遍历循环读取数据库查询结果数据,并逐一将订单修改为无效状态。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Miss糖豆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值