项目背景:
下级接口需要依赖上级“业务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”的接口不执行。
最终实现: