- [一、导入包含签名方法的jar包](#jar_57)
- [二、定义Jmeter变量](#Jmeter_105)
- [三、使用前置BeanShell处理器,进行签名,并将签名值赋予变量${sign}](#BeanShellsign_110)
- [四、发送HTTP Sampler,引用前置处理器中的变量 ${sign}](#HTTP_Sampler_sign_124)
- [五、BeanShell 断言](#BeanShell__127)
- [六、查看结果树](#_162)
### 一、导入包含签名方法的jar包
![](https://box.kancloud.cn/3e576a20e85fc5df8974cdb89f58e62e_1004x550.jpg)
其中的md5.jar 是自行编写的java类,然后导出的jar包,再在jmeter中导入进行使用
md5.java 代码参考如下:
package com.ssjj.ptqa;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class md5 {
public static String toMD5(String plainText) {
try {
// 生成实现指定摘要算法的 MessageDigest 对象。
MessageDigest md = MessageDigest.getInstance("MD5");
// 使用指定的字节数组更新摘要。
md.update(plainText.getBytes());
// 通过执行诸如填充之类的最终操作完成哈希计算。
byte b[] = md.digest();
// 生成具体的md5密码到buf数组
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();
// System.out.println("32位: " + buf.toString());// 32位的加密
// 16位的加密
// return buf.toString().substring(8, 24);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
return null;
public static void main(String agrs[]) {
String sign = new md5().toMD5("b68f05cd86e6633e9e012663ef4727e3203.151.232.104");// 加密LXD
System.out.println(sign);
### 二、定义Jmeter变量
key:Milton\_PTQA
ip:171.96.0.127 (随意填IP即可)
![](https://box.kancloud.cn/459e8c940ad1340e33313a79a3a752c3_962x245.jpg)
### 三、使用前置BeanShell处理器,进行签名,并将签名值赋予变量${sign}
![](https://box.kancloud.cn/4fc71d642f1e3d0d5b255a8c857084d5_943x468.jpg)
*代码参考*
import com.ssjj.ptqa.md5;
String ip = vars.get("ip");
String key = vars.get("key");
String pass = new md5().toMD5(key+ip);
//log.info("pass="+ip);
vars.put("sign",pass);
### 四、发送HTTP Sampler,引用前置处理器中的变量 ${sign}
![](https://box.kancloud.cn/24ca0b7a119ea67a4990618e60115d17_956x660.jpg)
### 五、BeanShell 断言
![](https://box.kancloud.cn/b65e4f274c22b35cfdf312769e953e7d_606x710.jpg)
*参考代码*
import org.json.*;
//测试国家
String test_area = "Thailand";
String country = "";
String city="";
Boolean result = false;
// 获取变量值
String ip = vars.get("ip");
// 获取返回字符串
String jsonString = prev.getResponseDataAsString();
// 将返回字符串构造为Json对象
JSONObject responseJson = new JSONObject(jsonString);
// 获取json对象中的值
int code = responseJson.getInt("code");
country = responseJson.get("data").get("country").toString();
city = responseJson.get("data").get("city").toString();
}catch(Exception e){
result = true;
if(result){
log.error("jsonString--------->:"+jsonString);
// 断言
if(!country.equals(test_area) || result || city.length()==0 ){
Failure=true;
FailureMessage="Error Response:"+jsonString;
### 六、查看结果树
![](https://box.kancloud.cn/06492ce6d1018f6952f952ad6c982836_680x540.jpg)
- - - - - -
![](https://box.kancloud.cn/331f659e8e6cddb0d9f182e00e32803f_258x258.jpg)
***微信扫一扫,关注“python测试开发圈”,获取更多测试开发分享!***
Fiddler01-抓包原理介绍与配置
Fiddler02-菜单功能介绍
Fiddler03-轻松玩转Fiddler
Fiddler04-进阶使用FiddlerScript
Fiddler05-使用FiddlerScript对微信文章互动量进行监控
Postman01-介绍与安装
Postman02-HTTP请求与响应
Postman03-Collection管理与运行
Postman04 -变量详解
Postman05-初级脚本使用
Postman06-实例小结篇
JMeter01-JMeter就是这么简单
JMeter02-一个完整实战包你学会使用JMeter
JMeter03-在JMeter中使用BeanShell编程
JMeter04-图形化和非图形化运行JMeter
JMeter05-生成美观的HTML测试报告
JMeter06-JMeter+Jenkins实战
JMeter07-解析session与cookie