JMeter中的BeanShell主要有:
定时器BeanShell Timer
前置处理器BeanShell PreProcessor
采样器BeanShell Sampler
后置处理器BeanShell PostProcessor
断言BeanShell
断言监听器BeanShell Listener
一、变量
JMeter中保存变量和获取变量值
vars.put("key",value)
vars.get("key"))
二、调试查看变量
1.通过log.info("value is "+vars.get("key"))
需要配合打开Log Viewer查看
2.通过Debug Sampler查看
每次运行的时候,在察看结果树中会多出一个Debug Sampler,里面有详细的变量信息
如下等号左是变量名,等号右是变量值
三、示例:引用外部java文件和java class文件
准备一个.java文件,因为是示例,用记事本写一个简单的Calculator保存到一个目录下
将.java文件编译成.class文件:在目录下运行javac Calculator.java
public class Calculator{
//加法
public int add(int a,int b){
return a+b;
}
//减法
public int sub(int a,int b){
return a-b;
}
}
在JMeter中引用,加载java文件,用source()函数。加载class文件目录,用addClassPath()函数。
四、示例:引用jar包
方式1直接将jar包复制到JMeter的lib目录下
方式2在测试计划中添加
1.在测试计划中引用jar包
导入一个同事写的jar包,获取两个经纬度的距离,接收的参数是两个double型数组,为了方便使用,写一个函数将两个String类型的数转换成double数组
2.这里先添加一个Beashell PreProcessor前置处理器
import com.bigdata.mapmeshapi.pojo.PolygonInfo;
import com.bigdata.mapmeshapi.service.PolygonService;
import com.bigdata.mapmeshapi.util.ComputeMapPoint;
/**
* 获取经纬度之间的距离
* @param lnglatA 101.727957 36.647654 经纬度空格分开
* @param lnglatB 101.685684 36.665703 经纬度空格分开
* @return 千米为单位
*/
public static double getDistanceBylnglat(String lnglatA,String lnglatB){
String[] str = lnglatA.split(" ");
double[] a = new double[2];
a[0] = Double.parseDouble(str[0]);
a[1] = Double.parseDouble(str[1]);
String[] str1 = lnglatB.split(" ");
double[] b = new double[2];
b[0] = Double.parseDouble(str1[0]);
b[1] = Double.parseDouble(str1[1]);
ComputeMapPoint computeMapPoint = new ComputeMapPoint();
double result = computeMapPoint.getDistanceBylonlat(a,b);
//System.out.println(result);
return result;
}
String b = "116.532139 39.906607";//第一个经纬度
String b1 = "116.291 39.826";//第二个经纬度
double result1 = getDistanceBylnglat(b,b1);
vars.put("distance",result1.toString());
log.info("value:"+vars.get("distance"));
3、在请求里使用变量
在察看结果树里可以看到HTTP请求为:GET http://127.0.0.1:8080/test?distance=22.472