在执行接口时的数据的参数化,参数数据获取的方式:
1、从环境变量中获取,
2、从本地文件中获取,
3、从预处理脚本中获取,
不同的场景需要做不同的处理,从变量中获取到数据不需要处理直接使用,可以用前面的两种方式,但有些数据需要做再次处理,那就需要第三种方式。前两中情况在前面已经介绍,这里做个补充介绍从预处理脚本中获取。就是以下面的接口为例:
接口headers中的参数:operator、randomstr、timestamp、encode;其中operator是静态的可以直接在环境变量epass中定义;但randomstr、timestamp、encode是动态的,这就需要在执行接口前进行定义处理,那就是预处理“Pre-request Script”。
Pre-request Script,使用的是javaScript脚本语言:
具体代码如下:
/**
* 产生随机整数,包含下限值,但不包括上限值
* @param {Number} lower 下限
* @param {Number} upper 上限
* @return {Number} 返回在下限到上限之间的一个随机整数
*/
function random(lower, upper) {
return Math.floor(Math.random() * (upper - lower)) + lower;
}
randomstr = random(10000000,99999999);
console.log(randomstr);
pm.environment.set("randomstr", randomstr);
//十三位毫秒时间戳
// timestamp = new Date().getTime();
//时间格式化yyyyMMddhhmmss
// # 方法1
// var myDate=new Date();
// var year = myDate.getFullYear();
// var month = myDate.getMonth();
// var date = myDate.getDate();
// var hours = myDate.getHours();
// var min = myDate.getMinutes();
// var seconds = myDate.getSeconds();
// hours = hours < 10 ? "0" + hours : hours;
// min = min < 10 ? "0" + min : min;
// seconds = seconds < 10 ? "0" + seconds : seconds;
// var date = year + "" + month + date + hours + min + seconds;
// console.log(date,"测试");
// #方法2
var moment = require('moment');
var timestamp = moment().format("YYYYMMDDHHmmss");
console.log(timestamp);
pm.environment.set("timestamp",timestamp);
//encode:将请求的(operator+randomstr+timestamp+鉴权用户密码)(不含括号)进行字符串连接,然后按照MD5算法计算摘要并转成大写
var operator = pm.environment.get("operator");
str = operator+randomstr+timestamp+"1234567890123456";
console.log(str);
encode = CryptoJS.MD5(str).toString().toUpperCase();
console.log(encode);
pm.environment.set("encode",encode);
在预处理定义后可以像引用变量一下引用参数