函数格式:KaTeX parse error: Expected group after '_' at position 2: {_̲_functionName(v…{__threadNum}
BeanShell
通过代码来改变执行过程中变量的值,beanshell有自己定义好的变量如vars,log,props等
1.beanshell提供脚本jar包导入的功能,source导入java文件
2.addClassPath导入class文件
简单举个例子:用beanshell给变量加密
java代码实现给一个字符串进行md5加密
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MD5UtilsJmeter {
public static String md5(String plainText) {
byte[] secretBytes = null;
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(plainText.getBytes());
secretBytes = md.digest();
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException("没有md5这个算法!");
}
String md5code = new BigInteger(1, secretBytes).toString(16);// 16进制数字
for (int i = 0; i < 32 - md5code.length(); i++) {
md5code = "0" + md5code;
}
return md5code;
}
}
将打包出来的jar包导入jmeter/lib/ext文件夹中
在beanshell中调用即可
import com.jmeter.utils.*;
//加密
System.out.println("****加密****");
String string = "123";
String secretstring = MD5UtilsJmeter.md5(string);
vars.put("string",secretstring);
String getEncode = vars.get("string");
System.out.println("Get my encode: "+getEncode);
这里是直接导入jar包到jmeter/lib/ext文件夹中,主要注意的是import的时候注意引入的是包中具体的类名,加点*或者加具体类名。
import com.jmeter.utils.*;
//加密
System.out.println("****加密****");
String string = "123";
String secretstring = MD5UtilsJmeter.md5(string);
vars.put("string",secretstring);
String getEncode = vars.get("string");
System.out.println("Get my encode: "+getEncode);
另外说个其他方式
添加java文件
在IDE中直接将java文件复制出来保存到某个位置文件是MD5UtilsJmeter.java,放到D盘中
直接在beanshell脚本中把原来的import换成source(“D:\MD5UtilsJmeter.java”);即可。
source("D:\\MD5UtilsJmeter.java");
//加密
System.out.println("****加密****");
String string = "1234";
String secretstring = MD5UtilsJmeter.md5(string);
vars.put("string",secretstring);
String getEncode = vars.get("string");
System.out.println("Get my encode: "+getEncode);
引用外部class文件
现在知道如何引用外部文件,有时候如果我们只有class文件怎么办呢?其实在jmeter中也可以直接引用class文件,示例如下:
首先我们要有class文件
在cmd控制台执行javac命令 + java文件的绝对路径,就会在该路径下生成一个class文件
用addClassPath(“D:\”)方法引入 class文件,在用import导入包及类,然后就可以像java一样调用了
addClassPath("D:\\JmeterBeanshellClassTest");
import com.jmeter.utils.MD5UtilsJmeter;
//加密
System.out.println("****加密****");
String string = "1234";
String secretstring = MD5UtilsJmeter.md5(string);
vars.put("string",secretstring);
String getEncode = vars.get("string");
System.out.println("Get my encode: "+getEncode);