『政善治』Postman — 10.Postman斷言(一)

我們檢驗(yàn)一個(gè)測(cè)試用例是否通過(guò),一般會(huì)將我們心理預(yù)期的結(jié)果與實(shí)際結(jié)果進(jìn)行比對(duì),如果結(jié)果一致則證明測(cè)試通過(guò)颂碘,如果結(jié)果不一致,則證明測(cè)試不通過(guò)椭迎,這即是我們經(jīng)常所說(shuō)的斷言。

1田盈、Tests的介紹

Postman中的斷言是使用請(qǐng)求后腳本Tests畜号,是對(duì)狀態(tài)碼、響應(yīng)頭允瞧、響應(yīng)正文等信息進(jìn)行斷言操作简软。

在Postman中封裝了我們常見(jiàn)的斷言代碼片段,當(dāng)然Tests除了可以作為斷言述暂,還可以當(dāng)做后置處理器痹升。

經(jīng)常應(yīng)用于:

  1. 斷言。
  2. 獲取當(dāng)前接口的響應(yīng)數(shù)據(jù)畦韭,傳遞給下一個(gè)接口疼蛾。

提示:在一個(gè)請(qǐng)求或者一個(gè)集合都可以定義Tests,在集合中定義Tests艺配,表示集合中的每一個(gè)請(qǐng)求響應(yīng)后察郁,都需要執(zhí)行Tests中的斷言腳本。

點(diǎn)擊請(qǐng)求中的Tests標(biāo)簽項(xiàng)转唉,如下圖:

我們可以在上圖看到皮钠,在Tests標(biāo)簽頁(yè)的右側(cè)邊欄中,Postman為我們提供了一些常用的代碼模版赠法。

提示我們:

Test scripts are written in JavaScript, and are run after the response is received.
測(cè)試腳本用JavaScript編寫(xiě)麦轰,并在收到響應(yīng)后運(yùn)行。

Learn more about tests scripts
點(diǎn)擊這里砖织,可以學(xué)習(xí)更多關(guān)于測(cè)試腳本的資料款侵。

這里學(xué)習(xí)關(guān)于Tests的更多用法:
https://go.pstmn.io/docs-test-scripts

總結(jié):

(1)Postman測(cè)試沙箱的執(zhí)行順序:

  1. 在發(fā)送Request之前,執(zhí)行Pre-request Script中的js腳本侧纯,可定制化Request(準(zhǔn)備數(shù)據(jù))新锈。
  2. 收到Response之后,執(zhí)行Tests中的腳本茂蚓,處理返回的數(shù)據(jù)(斷言或者處理數(shù)據(jù))壕鹉。

整個(gè)流大概是這樣的:


(2)Postman中Tests的作用:

  1. 做斷言:可以斷言狀態(tài)碼或者斷言返回?cái)?shù)據(jù)中的字段。
  2. 取返回值:做流程接口的時(shí)候聋涨,向下傳遞返回?cái)?shù)據(jù)晾浴。

2、常用SNIPPETS(片段)說(shuō)明

(1)常用變量相關(guān)

  • Get an environment variable:獲取一個(gè)環(huán)境變量牍白。
  • Get a gloval variable:獲取一個(gè)全局變量脊凰。
  • Get a variable:獲取一個(gè)變量(本地)。
  • Set an environment variable:設(shè)置一個(gè)環(huán)境變量。
  • Set a global variable:設(shè)置一個(gè)全局變量狸涌。
  • Clear an environment variable:清空一個(gè)環(huán)境變量切省。
  • Clear a global variable:清空一個(gè)全局變量 。

使用:

  • 獲取變量:如果在下一個(gè)請(qǐng)求中用到上一個(gè)請(qǐng)求的返回值帕胆,可以使用“設(shè)置一個(gè)環(huán)境變量”朝捆,將請(qǐng)求的返回值設(shè)置為環(huán)境變量,在下一個(gè)請(qǐng)求中懒豹,使用“獲取一個(gè)環(huán)境變量”取到該值芙盘。
  • 清空變量:這里的清空等于刪除變量,一個(gè)參數(shù)使用完成后脸秽,需要?jiǎng)h除儒老,或者清空值都可以使用該方法。

(同前一篇Pre-request Script的使用方式一樣)

(2)狀態(tài)碼相關(guān)

  • Status code: Code is 200:判斷狀態(tài)碼是否正確记餐;默認(rèn)判斷狀態(tài)是否為 200驮樊, 可修改。

    pm.test("Status code is 200", function () {
        pm.response.to.have.status(200);
    });
    
  • Status code:Successful POST request
    判斷狀態(tài)碼是否為預(yù)期結(jié)果之一片酝;比如默認(rèn)斷言狀態(tài)碼是否是 201囚衔, 202 中的一個(gè)。

    pm.test("Successful POST request", function () {
        pm.expect(pm.response.code).to.be.oneOf([201, 202]);
    });
    
  • Status code:Code name has string
    判斷狀態(tài)碼描述是否包含字符串钠怯,比如是否包含 Created佳魔。

    pm.test("Status code name has string", function () {
        pm.response.to.have.status("Created");
    });
    

(3)響應(yīng)結(jié)果斷言:

  • Response body: Contains string

    響應(yīng)結(jié)果是否包含字符串曙聂;

    注意:這只能檢查Response body中raw格式展示的返回?cái)?shù)據(jù)晦炊,如果raw格式展示的返回?cái)?shù)據(jù)中,有中文數(shù)據(jù)未解碼宁脊,也只能匹配未解碼形式的內(nèi)容断国,且匹配包含不唯一(工作中很少見(jiàn),一般接口返回?cái)?shù)據(jù)中不會(huì)設(shè)計(jì)重復(fù)字段)榆苞。

    pm.test("Body matches string", function () {
        // 比如raw中的數(shù)據(jù)稳衬,“學(xué)院”沒(méi)有進(jìn)行Unicode解碼,就只能如下方式進(jìn)行比對(duì)坐漏。
        pm.expect(pm.response.text()).to.include("例如:\u5b66\u9662");
    });
    
  • Response body: JSON value check

    響應(yīng)結(jié)果如果是 JSON格式的數(shù)據(jù)薄疚,檢查具體的 JSON字段的值;

    實(shí)際工作中基本就用這個(gè)方式赊琳。(下面有練習(xí)好好看看)

    pm.test("Your test name", function () {
        var jsonData = pm.response.json();
        pm.expect(jsonData.value).to.eql(100);
    });
    
  • Response body: Is equal to a string

    響應(yīng)結(jié)果與字符串是否全部匹配預(yù)期的字符串街夭;

    就是在把Response body的數(shù)據(jù)用raw格式展示,然后全部復(fù)制到下面位置躏筏。

    pm.test("Body is correct", function () {
        pm.response.to.have.body("raw格式展示的返回?cái)?shù)據(jù)板丽,全部復(fù)制到這里");
    });
    
  • Response body: Convert XML body to a JSON Object
    將 XML 轉(zhuǎn)換成 JSON;

    var jsonObject = xml2Json(responseBody);
    

等等還有很多趁尼,用的時(shí)候我們可以查看相關(guān)文檔埃碱。

(4)Header :

Response headers:Content-Type header check
響應(yīng)頭部中是否包含字段猖辫,代碼片段如下:

pm.test("Content-Type is present", function () {
    pm.response.to.have.header("Content-Type(這里填寫(xiě)請(qǐng)求頭屬性)");
});

(5)響應(yīng)速度:

Response time is less than 200ms
響應(yīng)時(shí)間是否少于多少 ms。

pm.test("Response time is less than 200ms", function () {
    pm.expect(pm.response.responseTime).to.be.below(200);
});
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末砚殿,一起剝皮案震驚了整個(gè)濱河市啃憎,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌似炎,老刑警劉巖荧飞,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異名党,居然都是意外死亡叹阔,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)传睹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)耳幢,“玉大人,你說(shuō)我怎么就攤上這事欧啤【υ澹” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵邢隧,是天一觀的道長(zhǎng)店印。 經(jīng)常有香客問(wèn)我,道長(zhǎng)倒慧,這世上最難降的妖魔是什么按摘? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮纫谅,結(jié)果婚禮上炫贤,老公的妹妹穿的比我還像新娘。我一直安慰自己付秕,他們只是感情好兰珍,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著询吴,像睡著了一般掠河。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上猛计,一...
    開(kāi)封第一講書(shū)人閱讀 52,457評(píng)論 1 311
  • 那天唠摹,我揣著相機(jī)與錄音,去河邊找鬼有滑。 笑死跃闹,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的望艺。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼找默,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了惩激?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤风钻,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后骡技,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體鸣个,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡囤萤,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了涛舍。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡唆途,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出窘哈,到底是詐尸還是另有隱情,我是刑警寧澤滚婉,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站帅刀,受9級(jí)特大地震影響让腹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜扣溺,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一骇窍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧锥余,春花似錦腹纳、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)足画。三九已至,卻和暖如春佃牛,著一層夾襖步出監(jiān)牢的瞬間淹辞,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工俘侠, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留象缀,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓爷速,卻偏偏與公主長(zhǎng)得像央星,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子惫东,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

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