jmeter,foreach控制器和json数据操作

场景:

        学生列表接口返回了所有学生信息,每个学生的所有信息装在一个jsonobject里面,这样的jsonobject装在一个jsonarray中。现在脚本中需要学生的某几个信息(比如:学生姓名、学籍号、准考证号等)填入下一个接口中进行请求

        常用操作是:获取所有需要的字段的全部值,在取的时候按顺序(stulists_1)进行取值;正常来说这样操作也是可以的,但是如果后端接口搞一个这个字段没有值就不会返回这个字段那么就不行了;或者我们需要对学生中的某个字段进行计算后,才填入写一个接口进行请求的时候就没法操作了

解决需要先对某个字段进行业务计算才进行foreach遍历:

        

下一步在foreach控制器中就可以对【obj】这个变量前缀进行遍历

解决需要对某个jsonobject中的多个字段都进行取值并进行foreach遍历:

方法一:

        

下一步在foreach控制器中对任意一个变量前缀进行遍历,其它变量使用【前缀_】+计数器来获取

也可以先获取任意一个变量,在遍历这个变量时的请求中使用beanshell前置处理器实时获取这个变量对应学生的其它值

方法二:

1、在学生列表接口设置后置处理器,获取所有学生信息

2、添加foreach控制器遍历这个学生信息数组:

接下来比较关键,如果将stulist这个jsonobject中学生的具体信息全部取出来,jmeter提取json数据肯定还是用json提取器,使用【JMeter Variable Name to use】对【stulist】进行提去操作

如上图进行提取学生姓名【name】行不行呢?----这样操作存在一个问题:json提取器是一个后置处理器,如图json提取器和业务请求在同一级,它会在foreach循环内的最后执行,虽然界面上它在业务请求的前面。

我们为了在foreach循环先执行json提取器,在额外加一个控制器来保证先执行:

这样设置还存在一个问题,简单控制器下只有提取器是不行的,它不会执行,只有在一个模块下存在取样器才会取执行,所以我们要么就在简单控制器下任意添加一个不会影响脚本的请求,或者加一个假请求beanshell取样器,这样就可以正常执行json提取器了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值