在我们测试接口的过程中,可能有时需要用到第三方jar包来生成一些测试数据(如有时需要对参数的输入值使用第三方jar包进行加密操作),涉及到这种的情况,普遍做法是:手动调用jar包获得需要的值,再把这些值赋值给jmeter中的某一个参数。这样的做法是繁琐的,而jmeter有调用jar包的功能,我们可以利用这个功能实现对jar包的嵌入调用。
下面我们将编写一个简单的加密程序,然后实现对这个jar包的调用。
1、先打开eclipse,然后写一个md5加密的类,代码如下:
package util;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class Str2MD5 {
//获取字符串的16位md5值
public static String MD5_16(String sourceStr){
String md5 = MD5_32(sourceStr).substring(8, 24);
// System.out.println("MD5(" + sourceStr + ",16) = " + md5);
return md5;
}
//获取字符串的32位md5值
public static String MD5_32(String sourceStr) {
String result = "";
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(sourceStr.getBytes());
byte b[] = md.digest();
int i;
StringBuffer buf = new StringBuffer("");
for (int offset = 0; offset < b.length; offset++) {
i = b[offset];
if (i < 0)
i += 256;
if (i < 16)
buf.append("0");
buf.append(Integer.toHexString(i));
}
result = buf.toString();
// System.out.println("MD5(" + sourceStr + ",32) = " + result);
} catch (NoSuchAlgorithmException e) {
System.out.println(e);
}
return result;
}
}
2、然后导出成jar包就可以了,取名为testAPI.jar
3、给jmeter引入改jar包,将导出的jar包放入jmeter文件夹的lib/ext下
4、在测试计划一级添加该jar包
5、给一个线程组添加一个前置处理器BeanShell PreProcessor
6、在BeanShell PreProcessor下编写java代码,实现对该jar包的调用,并将加密后的内容赋值给password
(http请求—>前置处理器—>BeanShell PreProcessor)
import util.*;
//加密
System.out.println("----开始给密码MD5加密!------");
String passwordMD5 = Str2MD5.MD5_32("${password}");
System.out.println("md5: " + passwordMD5);
vars.put("password", passwordMD5);
System.out.println("-----密码加密结束!------");
7、将赋值后的参数password给登接口引用
8、添加“查看结果树”查看到调用情况