jmeter使用Foreach控制器

项目背景:

    下级接口需要依赖上级“业务id”接口获取到的业务id才能进行请求,会获取到多个业务id想要覆盖所有的业务场景。

实现案例一:获取文章文件列表接口的数组类型数据,获得每个数据并依次请求

(1)添加后置处理器-正则表达式提取器,获取id值,引用名称为businessid
在这里插入图片描述
(2)添加取样器-Debug Sampler,查看是否获取到businessid值。

在这里插入图片描述
(3)添加逻辑控制器-ForEach控制器,输出变量名称为 businessid_new
因为需要获取所有的业务id,这里“结束循环字段”就使用了正则提取到的总条数,可在“Debug Sampler”中找到。

在这里插入图片描述
(4)添加下一级接口的http请求,并放入ForEach控制器,参数化ForEachk控制器输出变量名称 businessid_new

在这里插入图片描述
请求了所有的业务场景:

在这里插入图片描述
改进:上面的实现方法不适用于参数化脚本,所以将脚本进行了改进,可运用在所有需要获取业务id 的场景。

思路:
1.新增一个“如果if控制器”(if_business_id),将之前的“ForEach控制器”放在这个控件的下级。
  2.在csv文件中新增一列“business_id”,在url中存在“businessid”中的行中添加“Y”,判断当前接口需要引用业务id。

第一步:
在这里插入图片描述
 在“if_business_id”–>“HTTP请求”–>“BeanShell PreProcessor” 添加如下代码,当url中存在“businessid”时,用“businessid_new”(ForEach控制器中输出的变量名称)去替换字段生成新参数“new_url”,在“HTTP请求”中引用。

在这里插入图片描述
在这里插入图片描述
第二步:
在这里插入图片描述
 当csv中的字段“methods”等于“get”的时候执行下列操作,直接这么写存在问题,如下图:

在这里插入图片描述
在这里插入图片描述

问题分析:

 “if_get”下的“BeanShell PreProcessor”控件中没有写处理 业务id 的代码,所以会直接读取到csv文件中的url字段数据。

解决方法:

 将“if_get请求”这个“如果if控制器”中的条件修改一下如下,当“methods”字段等于“get”但是“business_id”字段不等于“Y”,这样就可以跳过“url”中包含“business”的接口不执行。

在这里插入图片描述
最终实现:

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值