Jmeter Bean Shell 的巧用——动态设置循环次数

需求:根据接口返回值(如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

猜你喜欢

转载自blog.csdn.net/l1509214729/article/details/101375248