有些接口存在签名,变动一个参数可能签名就会不一样,每次都需抓包获取签名,不利于提高测试效率,以下是直接在postman中请求接口时生成签名以供调用示例。
1、编辑接口集;
2、编写获取签名脚本
签名规则如下:
1)公参不参与签名
2)参数名按ASCII码从小到大排序
3)拼接成字符串,最后再做MD5加密,转换成32位大写,格式如下(key1=value&key2=value&key=固定字符串),最后拼接一个固定字符串
//获取请求参数键值
const getParams = pm.request.url.query;
let params = {};
let urlAndBodyParams = {};
//获取请求参数名
getParams.each((singleGetParam)=>{
if (!singleGetParam.disabled){
const key = singleGetParam.key;
const value = singleGetParam.value;
Object.assign(params, {[key]: value});
}
});
//拼接请求参数、body参数
urlAndBodyParams = Object.assign(params, request.data);
//参数名按照ASCII码升序排序
urlAndBodyKeys = Object.keys(urlAndBodyParams).sort();
var signStr = [];
//拼接待签名字符串
for (var p = 0; p < urlAndBodyKeys.length; p++) {
//摘取公参,公参不参与签名
if(urlAndBodyKeys[p] == "test1" || urlAndBodyKeys[p] == "test2" ){
continue;
}
signStr.push(urlAndBodyKeys[p] + "=" + urlAndBodyParams[urlAndBodyKeys[p]]);
}
//拼接固定字符串
signStr.push('key=' + '1234567890')
var sign = signStr.join("&")
var md5 = CryptoJS.MD5(sign).toString(); //MD5摘要
//放入环境变量
postman.setGlobalVariable("md5msg", md5);
3、在接口中签名key调用环境变量中的md5msg值
4、执行接口调用,自动生成签名