使用Postman工具做介面測試(五)——生成隨機引數

全棧測試開發日記發表於2020-08-18

  引言

  我們平時使用最多的介面除錯工具就是postman了,比如開發將一個介面給到你,你想看看介面是否正常。最常用的方法就是用postman去調一下。如果通,就寫介面測試用例,反之,將開發打一頓吧o(* ̄︶ ̄*)o。

  我們測試介面時,避免不了重複呼叫一個介面,這樣的話,需要隨機數來引數化關鍵的業務欄位。

  Postman三種內建隨機數

  其實postman還有其他內建隨機數,這裡介紹postman三種隨機數,開啟postman,輸入{{,可以看到,如圖:

 

  隨機數如下:

  {{$guid}}:新增一個V4風格GUID(如: aa002-44ac-45ca-aae3-52bf19650e2d)

  {{$timestamp}}:將當前的時間戳,精確到秒

  {{$randomInt}}:新增0和1000之間的隨機整數

  我們分別在postman中使用,如下:

 

 

 

  是不是挺好用,這樣我們就可以用它來引數化了,重複呼叫介面也不會導致報文中資料重複使用同一份資料。

  但是,如果我想要生成6位,10位隨機整數呢? 要怎麼做?

  這個時候需要自定義隨機數。

  Postman自定義隨機函式

  自定義隨機整數

  程式碼如下:

  第一種:

// 結果為0-1間的一個隨機數(包括0,不包括1)
var randomNum1 = Math.random();
console.log(randomNum1);

  

 

 

  第二種:

// 獲取最小值到最大值之前的整數隨機數
function GetRandomNum(Min, Max) {
    var Range = Max - Min;
    var Rand = Math.random();
    return(Min + Math.round(Rand * Range));
}
var num = GetRandomNum(100000, 999999);
console.log(num);

  

 

 

 

  第三種:

/**
* 產生隨機整數,包含下限值,但不包括上限值
* @param {Number} lower 下限
* @param {Number} upper 上限
* @return {Number} 返回在下限到上限之間的一個隨機整數
*/
function random(lower, upper) {
return Math.floor(Math.random() * (upper - lower)) + lower;
}

console.log(random(100000,999999));

  

 

 

  第四種:這種就有可能第一位是0

var Num="";

for ( var i=0;i<10; i++ )

{

Num += Math.floor(Math.random() * 10);

}


console.log(Num);

 

 

 

  上面都是生成自定義位數的隨機數,你可以根據需要傳入引數來決定幾位。

 

  自定義隨機時間

  通常情況下,很多介面使用的是時間戳,其實我們也可以用這個來做隨機數引數化,如圖:

//十三位毫秒時間戳
let a = Date.now();
console.log(a);
//十三位毫秒時間戳
b = new  Date().getTime(); 
console.log(b)

//十位秒時間戳
let c = Date.now()/1000;
console.log(c.toString().substring(0,10)); //擷取第 0~9 位
console.log(parseInt(c))

// 將 13 位時間戳除以 1000 然後再取整,得到 10 位時間戳數字
parseInt(+new Date()/1000);

// 將 13 位時間戳轉換為字串擷取前 10 位,得到 10 位時間戳字串
(+new Date()).toString().substring(0,10); // 擷取第 0~9 位
(+new Date()).toString().substr(0,10);    // 從第 0 位開始擷取 10 位

  

 

 

 

  如果我們想使用具體時間作為隨機引數,例如,獲取當前年月日時分秒,可以這樣,如圖:

a = (new Date()).Format("yyyy-MM-dd hh:mm:ss.S")
b = (new Date()).Format("yyyy-M-d h:m:s.S") 
console.log(a)
console.log(b)


c = (new Date()).Format("yyyyMdhms")
d = (new Date()).Format("yyyyMMddhhmmss")
console.log(c)
console.log(d)

  

 

 

  Postman實操

  結合上面的例子,我們在postman中使用如下:

function random(lower, upper) {
return Math.floor(Math.random() * (upper - lower)) + lower;
}

var nums = random(100000,999999)
console.log(nums);

pm.environment.set('nums',nums);

console.log(nums);

  

  執行結果:

 

 

  時間引數化:

# 方法1
var myDate=new Date();
var year = myDate.getFullYear();
var month = myDate.getMonth() + 1;
var date = myDate.getDate();
var hours = myDate.getHours() + 1;
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 data = moment().format(" YYYYMMDDHHmmss");
console.log(data);
pm.globals.set("time", data);

  執行結果如圖:

 

 

  總結

  以上就是我們在使用postman做介面測試時,經常使用的隨機數作為引數化的例子。希望可以幫助到你,另外,對介面測試及測試開發感興趣的朋友,可以一起學習與交流,加入我們測試開發群。

 

相關文章