快速上手postman測(cè)試

0. test的構(gòu)成

一個(gè)標(biāo)準(zhǔn)test的寫法如下:

pm.test("test name", function () {
    //測(cè)試邏輯
});

它由兩部分構(gòu)成:

  1. test name. 這個(gè)name會(huì)出現(xiàn)在你的測(cè)試報(bào)告中
  2. function. 這部分包含你的居體測(cè)試邏輯(解析數(shù)據(jù)祟峦,斷言等等)

一個(gè)具體的例子如下:

pm.test("http code is 200", function () {
    //判斷http返回碼
    pm.response.to.have.status(200);
});

pm.test("response data is right", function () {
    //解析返回值
    var response = JSON.parse(responseBody);
    
    //通過斷言判斷返回值的正確性
    pm.expect(response.msg).to.eql("ok");
    pm.expect(response.code).to.eql(0);
});

1. 如何運(yùn)行/查看一個(gè)test

1. 單個(gè)test

image
  • 在Tests窗口寫測(cè)試
  • 點(diǎn)擊send發(fā)送請(qǐng)求
  • 在Test Results窗口查看結(jié)果

2. 批量test

如下圖所示瞻惋,可以整體運(yùn)行一個(gè)集合的中的全部測(cè)試


image

運(yùn)行后可看到類似下圖的測(cè)試結(jié)果


image

2. 一些常用的變量

//響應(yīng)的http code
pm.response.code

//請(qǐng)求響應(yīng)時(shí)間, 單位ms
pm.response.responseTime,

//返回回?cái)?shù)據(jù)的大小乳怎,包含header    
pm.response.responseSize,
    
//響應(yīng)頭洗贰,一個(gè)object
responseHeaders
//取Content-Type
responseHeaders['Content-Type']

//響應(yīng)體洲鸠,字串蝇更。如果服務(wù)端返回的是json幽崩,需要JSON.parse后才能得到對(duì)應(yīng)的json對(duì)象
responseBody

//獲取相應(yīng)cookie值
pm.cookies.get(cookieName:String)

3. 常用斷言

3.1 pm.expect

1. pm.expect(a).to.equal(b)

a,b嚴(yán)格相等,例:

pm.test("response data is right", function () {
    var response = JSON.parse(responseBody);
    //response.code === 0
    pm.expect(response.code).to.eql(0);
});

2. pm.expect(a).to.deep.equal(b)

a,b為多層結(jié)構(gòu)時(shí),判斷a,b相等帖池。例:

pm.test("deep equal", function(){
    var a = {
        num1:[1,1,1], 
        num2:[2,2,2]
    };
    var b = {
        num1:[1,1,1], 
        num2:[2,2,2]
    };
    
    pm.expect(a).to.deep.equal(b);   
});

3. pm.expect(object).to.have.property(key)

object中有屬性key奈惑。例:

pm.test("have property", function(){
    var object = {
        name:"ball",
        money:0,
        age:100
    }
    
    pm.expect(object).to.have.property('age'); 
});

4. pm.expect(a).to.include('b')

a中包含b

pm.test("include", function(){
    //a可以是字串
    var str = "this is a test";
    pm.expect(str).to.include('this');
    
    //a可以是數(shù)組,此時(shí)b只能是簡(jiǎn)單值睡汹,不能是array肴甸。若希望b為array,需要用members方法做斷言。
    var ary = [1,2,3,4];
    pm.expect(ary).to.include(2);
    
    //a可以是是object
    var obj = {
        name:"ball",
        money:0,
        age:100
    };
    pm.expect(obj).to.include({age:100, name:"ball"});
});

5. pm.expect(a).to.be.below(b)

a小于b囚巴。例:

//響應(yīng)時(shí)間小于200ms
pm.expect(pm.response.responseTime).to.be.below(200);

6. expect(a).to.be.above(b)

a大于b原在。

更多斷言,參見

https://learning.postman.com/docs/postman/scripts/test-examples/#assertion-library-examples
https://www.chaijs.com/api/bdd/

3.2 pm.response

1. pm.response.to.have.status(code:Number)

判斷http返回碼彤叉。例:

//http code 200
pm.response.to.have.status(200);

2. pm.response.to.have.header(key:String, optionalValue:String)

判斷響應(yīng)頭字段庶柿。例

//響應(yīng)頭中有Cache-Control,其值為no-cache
pm.response.to.have.header('Cache-Control', 'no-cache');  

更多使用參見

https://learning.postman.com/docs/postman/scripts/postman-sandbox-api-reference/#response-assertion-api-available-in-the-test-scripts

4. 引用沙箱中的js庫

postman的測(cè)試中可以使用很多js庫秽浇。具體參見

https://learning.postman.com/docs/postman/scripts/postman-sandbox-api-reference/

一個(gè)使用crypto-js做AES加密的例子:

var crypto = require('crypto-js');
var uid = "999@qq.com";
var key = crypto.enc.Utf8.parse("112233");

var opt = {
    mode:crypto.mode.ECB, 
    padding:crypto.pad.Pkcs7
}

var userid = crypto.AES.encrypt(uid, key, opt);

5. 發(fā)送異步請(qǐng)求

詳見

https://learning.postman.com/docs/postman/scripts/postman-sandbox-api-reference/#pmsendrequest
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末浮庐,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子柬焕,更是在濱河造成了極大的恐慌审残,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件斑举,死亡現(xiàn)場(chǎng)離奇詭異搅轿,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)懂昂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來凌彬,“玉大人,你說我怎么就攤上這事循衰〔玻” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵会钝,是天一觀的道長(zhǎng)伐蒋。 經(jīng)常有香客問我工三,道長(zhǎng),這世上最難降的妖魔是什么先鱼? 我笑而不...
    開封第一講書人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任俭正,我火速辦了婚禮,結(jié)果婚禮上焙畔,老公的妹妹穿的比我還像新娘掸读。我一直安慰自己,他們只是感情好宏多,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開白布儿惫。 她就那樣靜靜地躺著,像睡著了一般伸但。 火紅的嫁衣襯著肌膚如雪肾请。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,692評(píng)論 1 305
  • 那天更胖,我揣著相機(jī)與錄音铛铁,去河邊找鬼。 笑死却妨,一個(gè)胖子當(dāng)著我的面吹牛饵逐,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播管呵,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼梳毙,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了捐下?” 一聲冷哼從身側(cè)響起账锹,我...
    開封第一講書人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎坷襟,沒想到半個(gè)月后奸柬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡婴程,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年廓奕,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片档叔。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡桌粉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出衙四,到底是詐尸還是另有隱情铃肯,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布传蹈,位于F島的核電站押逼,受9級(jí)特大地震影響步藕,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜挑格,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一咙冗、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧漂彤,春花似錦雾消、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至士骤,卻和暖如春范删,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背拷肌。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來泰國打工到旦, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人巨缘。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓添忘,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親若锁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子搁骑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容