記一些用于 Postman 中 Pre-request Script 部分的 js 腳本

1. 生成一個MD5或SHA1加密的字符串str_md5,str_sha1

string1 = "123456";
var str_md5= CryptoJS.MD5(string1).toString();  //MD5 加密
var str_sha1= CryptoJS.SHA1(string1).toString(); //SHA1 加密
pm.globals.set("str_md5", str_md5);

2. 生成一個 yyyyMMddHHmm 格式的字符串date_str

var myDate = new Date();  //獲取當前時間
var Y = myDate.getFullYear();    // 獲取完整的年份(4位)
var M = myDate.getMonth() + 1;       // 獲取當前月份(0-11,0代表1月)
    M = M < 10 ? ('0' + M) : M;
var D = myDate.getDate();        // 獲取當前日(1-31)
    D = D < 10 ? ('0' + D) : D;
var h = myDate.getHours();       // 獲取當前小時數(shù)(0-23)
    h=h < 10 ? ('0' + h) : h;
var m = myDate.getMinutes();     // 獲取當前分鐘數(shù)(0-59)
    m = m < 10 ? ('0' + m) : m;

var date_str = Y + M + D + h + m;
pm.globals.set("date_str ", date_str );

另外一種寫法是封裝了函數(shù),可以直接調(diào)用,例如 timestamp :

function dateFormat(fmt) { 
    var nowDate = new Date();
     var o = { 
        "M+" : nowDate.getMonth()+1,                 //月份 
        "d+" : nowDate.getDate(),                    //日 
        "h+" : nowDate.getHours(),                   //小時 
        "m+" : nowDate.getMinutes(),                 //分 
        "s+" : nowDate.getSeconds(),                 //秒 
        "q+" : Math.floor((nowDate.getMonth()+3)/3), //季度 
        "S"  : nowDate.getMilliseconds()             //毫秒 
    }; 
    if(/(y+)/.test(fmt)) {
            fmt=fmt.replace(RegExp.$1, (nowDate.getFullYear()+"").substr(4 - RegExp.$1.length)); 
    }
     for(var k in o) {
        if(new RegExp("("+ k +")").test(fmt)){
             fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
         }
     }
    return fmt; 
}

var timestamp = dateFormat('yyyyMMddhhmmss');
pm.environment.set("timestamp",timestamp);

3. 生成自增的編號Num

var Num = pm.environment.get("Num");
Num_new = Number(Num)+Number(1);
pm.environment.set("Num", Num_new);

4. 生成隨機數(shù)值

//使用 Random 函數(shù)獲取隨機數(shù)
const RandomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;  //取某個數(shù)值范圍內(nèi)的隨機整數(shù)
const getRandomValue = list => list[RandomInt(0, list.length - 1)];     //取某個數(shù)組內(nèi)的隨機數(shù)值

const random_wishies= ["山河無恙","人月兩圓","國泰民安","萬事如意","貪吃不胖"];
pm.environment.set("random_wishies",getRandomValue(random_wishies));

5. 獲取在某個時間范圍內(nèi)的yyyyMMddHHmm格式的隨機時間get_rzsj

StartDate = new Date(2018,0,1);
EndDate = new Date(2018,11,31);
function getRandomDateBetween(StartDate, EndDate)   // 獲取指定日期范圍內(nèi)的日期;
{ 
    var Radomdate = new Date(1958,0,1);
    x = StartDate.getTime();
    y = EndDate.getTime();
    Radomdate.setTime(Math.random()*(y - x + 1) + x);
    return Radomdate;
}
Radomdate = getRandomDateBetween(StartDate,EndDate); 

var BY = Radomdate.getFullYear();    // 獲取完整的年份(4位)
var BM = Radomdate.getMonth() + 1;   // 獲取當前月份(0-11,0代表1月)
    BM = BM < 10 ? ('0' + BM) : BM;
var BD = Radomdate.getDate();        // 獲取當前日(1-31)
    BD = BD < 10 ? ('0' + BD) : BD;
var Radomdate_str = BY+ BM + BD ;
pm.globals.set("sjsj", Radomdate_str);

6. 生成隨機男女生姓名Name

const FirstName = ['艾','倪','薛','屈','勵','池'];
const BoyNames = ['偉','剛','勇','彬','富','順','信','弘'];
const GirlNames = ['璐','凝','曉','歡','霄','楓','青','婷'];

//使用 getNum 函數(shù)獲取隨機數(shù)
const RandomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;  //取某個數(shù)值范圍內(nèi)的隨機整數(shù)
const getRandomValue = list => list[RandomInt(0, list.length - 1)];     //取某個數(shù)組內(nèi)的隨機數(shù)值

let EmployeeName = '';  //初始化
let name_sex = '';   //初始化

//判斷性別
sex = RandomInt(0,1);
str = BoyNames;//默認使用 BoyNames
if (sex === 0) //如果性別取0時,使用 GirlNames
{ 
    str = GirlNames; 
    name_sex = "2"; //2代表女
} 
else
{ 
    name_sex = "1"; //1代表男
}
pm.globals.set("Employee_sex", name_sex);//獲取性別


first = FirstName[Math.floor(Math.random()*FirstName.length-1)];    //隨機取一個姓氏
second = str[Math.floor(Math.random()*(str.length-1))];     //隨機取str的一個字

hasThird = RandomInt(0, 1);     //使用RandomInt函數(shù)判斷是否取名字的第二個字
third = ""; 
if (hasThird == 1) 
{ 
    third = str[Math.floor(Math.random()*(str.length-1))];
} 

var ChineseName = first + second + third; 
pm.globals.set("Name",ChineseName);

7. 生成隨機身份證號碼 randomIDcardno

const odd = ['1','3','5','7','9'];  //奇數(shù)數(shù)組
const even = ['0','2','4','6','8'];     //偶數(shù)數(shù)組
if (name_sex == '2')
    {
        var num = getRandomValue(even);  //如果性別為女,順序碼第三位取偶數(shù),這里getRandomValue 函數(shù)需要引用第5條或第6條的隨機數(shù)函數(shù),下同
    }
  else
    {
       num = getRandomValue(odd);     //如果性別為男,順序碼第三位取奇數(shù),引用第5條或第6條的隨機數(shù)函數(shù)
    }

function getIDcardno()
{
    const address = ['110000','450501','361100','511323','410701','654322'];  //所有區(qū)域代碼,這里省略了大部分,需要的可以自己去查下加入
    var areaCode = getRandomValue(address);  //隨機獲取身份證號碼前6位
    var birthday = Radomdate_str;   // 獲取6位出生日期
    
    var sequencecode = Math.floor(Math.random()*10).toString() + Math.floor(Math.random()*10).toString() + num; //生成3位出生順序碼,num 分奇偶數(shù)
    var array = (areaCode + birthday + sequencecode).split("");   //split方法分隔17位數(shù)字
    
    var coefficientArray = [ '7','9','10','5','8','4','2','1','6','3','7','9','10','5','8','4','2'];        //加權因子
    var lastNumberArray = [ "1","0","X","9","8","7","6","5","4","3","2"];       //校驗碼
       
    var sum = 0;
    for (var i = 0; i < array.length; i++)
       {
            sum = sum + parseInt(array[i])*parseInt(coefficientArray[i]);   //權重求和
       }       
    var lastNumber = lastNumberArray[parseInt(sum%11)]; //
    var IDcardno_String = areaCode + birthday + sequencecode + lastNumber;  //
    return IDcardno_String;
}
randomIDcardno = getIDcardno();//獲取函數(shù)返回值
pm.globals.set("randomIDcardno", randomIDcardno);  //將函數(shù)返回值定義給全局變量randomIDcardno

8. 生成隨機手機號碼 phoneNum

function randomPhoneNum(){
    var Num = '189';
    for(var i=0; i < 8; i++){
        Num += Math.floor(Math.random() * 10);
    }
    return Num;
}

var str_phone = randomPhoneNum();
pm.globals.set("phoneNum", str_phone);

9. 生成一個4位字母數(shù)字混合的字符串

pm.globals.set("random_code", ("0000" + (Math.random()*Math.pow(36,4) << 0).toString(36)).slice(-4));

10. 生成當前的時間戳

pm.globals.set("unixtime_now", Math.round(new Date().getTime()/1000));
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容