Jmeter 接口测试参数处理
问题:
一、签名参数sign算法由文字描述,算法需自己编写
二、 参数param_json为变化的json串(json串内订单号唯一)
解决:
一、 签名sign:
1. 手动拼接后在https://www.cmd5.com/加密,较为麻烦,且容易出错
2. 编写python或java脚本,实现加密,比方法1高效
3. 在postman的Pre-request Script
1 let app_secret = "xxx"; //签名app_secret 2 let access_token = "xxx"; 3 let app_key = 'xxx'; 4 let method = 'xxx'; 5 let param_json ='{"thirdOrder":"xxx" ...}'; //参数省略 6 let timestamp ='2018-06-06 13:52:03'; // 注意格式 7 let v = '1.0'; 8 9 10 //拼接 11 sign = app_secret +"access_token"+ access_token +"app_key"+app_key+"method"+method+"param_json"+param_json+"timestamp"+timestamp+"v"+v+app_secret; 12 console.log(sign); 13 sign = CryptoJS.MD5(sign).toString(); 14 console.log(sign); 15 16 //设置环境变量 17 postman.setEnvironmentVariable("sign", sign);
View Code
效率大大提高,推荐方法。
4. Jmeter处理方法:
——-4.1 编写java代码实现加密以及生成唯一订单号
——-4.2 将java代码打包后,拷贝到jmeter的lib/ext目录下
——-4.3 在测试计划中引入jar
——-4.4 添加BeanShell Sampler,编写脚本(类似java语法)
1 // 导入外部jar包(计算sign) 2 import com.wdzy.tools.GetSign; 3 4 // 基本不变参数 5 String app_secret = "xxx"; //签名app_secret 6 String access_token = "xxx"; 7 String app_key = "xxx"; 8 String method = "xxx"; 9 String timestamp ="2018-06-06 13:52:03"; 10 String v = "1.0"; 11 12 // 处理第三方订单号 13 String param_json = new GetSign().getParamJson(); 14 String param_json = param_json.toString(); 15 vars.put("param_json",param_json.toString()); 16 17 // 拼接sign串 18 sign = app_secret +"access_token"+ access_token +"app_key"+app_key+"method"+method+"param_json"+param_json+"timestamp"+timestamp+"v"+v+app_secret; 19 // 计算MD5值 20 String result = new GetSign().MD5(sign); 21 22 System.out.println(result); 23 // 将sign结果存储到作用域 24 vars.put("sign",result.toString());
View Code