在我们使用Jmeter进行测试,尤其是接口测试,有时需要对参数进行MD5加密后再进行操作,比如登录的时候如果输入正确的明文密码,而不对密码进行MD5加密处理,执行Jmeter时,会有如下报错:
上次介绍了使用Jmeter的函数助手实现参数的MD5加密,详见:https://blog.csdn.net/qq_28863851/article/details/84776952
本次介绍另外一种方法利用Jmeter实现参数的MD5加密。
原料
Jmeter,MD5算法,eclipse
准备工作
Jmeter没有内置的MD5加密方法,我从网上找了一份,实现了加密功能,具体操作如下:
- 从网上找一份MD5加密算法,在eclipse中新建Java Project(项目名称自己起)-新建Package(包名自己起)-新建Class(类名自己起),建好后,将下面的MD5算法复制到.java文件下,注意根据自己起的项目名、包名和类名修改相应代码。
package hfjy.test.jmeter;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class Tools {
public static String getMd5(String plainText) {
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(plainText.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));
}
//32位加密
return buf.toString();
// 16位的加密
//return buf.toString().substring(8, 24);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
return null;
}
}
}
下图为我的eclipse截图:
2. 导出jar包
点击file->Export,出现如下弹窗,选择Java文件夹下的JAR file,点击Next
选择要导出的项目,点击Browser选择要保存的位置,并取名**.jar,点击保存,点击Finish
3. 将导出的jar放到Jmeter安装目录下的lib文件夹下,如图所示:
4. 在Jmeter中新建测试计划,添加线程组登录,添加取样器-HTTP请求,取名login,填写相应信息,参数用参数化形式填写
5. 给线程组添加前置处理器-用户参数,如图,将参数的正确明文填入对应参数中
6. 给线程组添加前置处理器-BeanShell PreProcessor,在BeanShell PreProcessor中写入以下测试内容:
import hfjy.test.jmeter.Tools;
String pwd = Tools.getMd5(vars.get("password"));
vars.put("password",pwd);
- 此时再执行Jmeter,就可以正常登录成功了