需求:根据接口返回值(如9)循环去请求另外一个接口,如何设置循环次数,以及获取循环的index
解决思路:
实际解决:
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.JSONArray;
String responseData = prev.getResponseDataAsString();
log.info(responseData);
JSONArray jsonArr = JSONObject.parseObject(responseData).getJSONArray("data");
int siez = jsonArr.size();
vars.putObject("size", siez + "");
${__BeanShell(Integer.parseInt(vars.getObject("size").toString()))}
注意点:
1. vars.put 或者 vars.putObject 都不可以直接设置int类型 所以获取的时候自然也不能获取到int 值,而计数的时候,需要设置最大值,以保证每次循环完都能从0开始 最大值一定要是int型 ,不然默认为0
2. ${__BeanShell()} 主要就是使用到了Jmeter 的BeanShell函数,注意前面要加两个下划线
3. 例如vars 这样的变量能使用的API的地址
ctx 地址:http://jmeter.apache.org/api/org/apache/jmeter/threads/JMeterContext.html
vars 地址:http://jmeter.apache.org/api/org/apache/jmeter/threads/JMeterVariables.html
prev地址:http://jmeter.apache.org/api/org/apache/jmeter/samplers/SampleResult.html
4. 例如BeanShell这样的函数的
官方地址
http://jmeter.apache.org/usermanual/functions.html
或者查看翻译
http://www.testclass.net/jmeter/jmeter-doc-20/
或者参考这篇文章
https://www.jianshu.com/p/c66b846e2ada