vars: 引用Jmeter线程的局部变量,将
局部变量
改为 全局变量 亦可达到引用全局变量的效果
方法
String State1= vars.get("State"); // 获取变量的值, State 为变量名称
vars.put("Comment",Comment);//将放置一个Map到vars,后期可通过key引用value
需求:传入参数为任务状态,当任务状态为已延期时,需要将延期原因的值改为字符串; 任务状态不为已延期时,任务状态的值要为空
方法:使用BeanShell预处理器:
示例代码如下:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
String State1=bsh.args[0]; //传入任务条状态
//String State1= vars.get("State"); //任务条状态也可通过vars.get()获取
String Comment=null;
log.info(State1);
//延期状态为已延期时,将Comment的值设置为"我延期了"
if(State1.equals("OVERDUED")){
Comment="\"我延期了\""; //双引号里要填写\"我延期了\",而不是我延期了,不然引用的数据没有引号
}
vars.put("Comment",Comment);//将放置一个Map到vars,后期可通过key引用value
log.info("任务状态:"+State1); //用于调试值是否传入成功
log.info("延期原因:"+Comment);//用于调试Comment值是否正确
遇到的问题:
1.equals与==的区别,equals比较的是值的存储位置是否相等,==比较的是变量名是否相等
字符串/对象都要用equals
基本数据类型用==
2.put(key,value),value里要自己加引号(使用反斜杠注释特殊字符),不然引用的数据没有引号