接口測試之postman

第一部分:基礎(chǔ)篇

postman:4.5.1
1.安裝postman
進(jìn)入postman官網(wǎng),如果是mac系統(tǒng)可以直接點(diǎn)擊mac app安裝


如果是windows的話衅枫,需要在windows下安裝chrome瀏覽器,然后在地址欄輸入chrome://extensions,勾選開發(fā)者模式

然后將下載的postman插件解壓,瀏覽器點(diǎn)擊加載已解壓的擴(kuò)展程序,選擇插件所在目錄就可以了

2.測試第一個(gè)api,以豆瓣開發(fā)者api為例



這個(gè)接口的method為get,postman默認(rèn)為get,在url欄輸入被測接口



在接口文檔中,q與tag其中的一個(gè)是必填項(xiàng),所以這里需要配置參數(shù)曙咽,點(diǎn)擊url右側(cè)的params,并輸入?yún)?shù)

點(diǎn)擊send按鈕發(fā)送請求挑辆,在下面可以看到返回的response,響應(yīng)的狀態(tài)碼例朱,與響應(yīng)時(shí)間



response還可以以不同的方式查看孝情,并且還可以看到cookies,headers信息

每次以不同的參數(shù)或者設(shè)置洒嗤,在左側(cè)history都會(huì)幫我們記錄一個(gè)接口測試歷史箫荡,以便于下次重新調(diào)用

第二部分:進(jìn)階篇

1.使用自帶的腳本對接口進(jìn)行測試
點(diǎn)擊tests按鈕,可以看到右側(cè)有個(gè)snippets欄渔隶,里面就是postman內(nèi)置的測試腳本羔挡,輔助對接口進(jìn)行測試



選擇其中的一個(gè)腳本,修改其中的參數(shù)间唉,再次點(diǎn)擊send绞灼,這時(shí)response的tests出現(xiàn)了一個(gè)1/1,說明執(zhí)行一個(gè)測試并且通過測試呈野,綠色pass說明驗(yàn)證通過



紅色fail說明測試不通過低矮,一個(gè)接口可以寫多個(gè)腳本進(jìn)行多次測試

2.內(nèi)置腳本說明
1. 清除一個(gè)全局變量
Clear a global variable
對應(yīng)腳本:
postman.clearGlobalVariable("variable_key");
參數(shù):需要清除的變量的key

  2.清除一個(gè)環(huán)境變量
    Clear an environment variable
    對應(yīng)腳本:
    postman.clearEnvironmentVariable("variable_key");
    參數(shù):需要清除的環(huán)境變量的key

  3.response包含內(nèi)容
    Response body:Contains string
    對應(yīng)腳本:
    tests["Body matches string"] =responseBody.has("string_you_want_to_search");
    參數(shù):預(yù)期內(nèi)容

  4.將xml格式的response轉(zhuǎn)換成son格式
    Response body:Convert XML body to a JSON Object
    對應(yīng)腳本:
    var jsonObject = xml2Json(responseBody);
    參數(shù):(默認(rèn)不需要設(shè)置參數(shù),為接口的response)需要轉(zhuǎn)換的xml

  5.response等于預(yù)期內(nèi)容
    Response body:Is equal to a string
    對應(yīng)腳本:
    tests["Body is correct"] = responseBody === "response_body_string";
    參數(shù):預(yù)期response

  6.json解析key的值進(jìn)行校驗(yàn)
    Response body:JSON value check
    對應(yīng)腳本:
    tests["Args key contains argument passed as url parameter"] = 'test' in responseJSON.args
    參數(shù):test替換被測的值,args替換被測的key

  7.檢查response的header信息是否有被測字段
    Response headers:Content-Type header check
    對應(yīng)腳本:
    tests["Content-Type is present"] = postman.getResponseHeader("Content-Type");
    參數(shù):預(yù)期header

  8.響應(yīng)時(shí)間判斷
    Response time is less than 200ms
    對應(yīng)腳本:
    tests["Response time is less than 200ms"] = responseTime < 200;
    參數(shù):響應(yīng)時(shí)間

    9.設(shè)置全局變量
      Set an global variable
      對應(yīng)腳本:
      postman.setGlobalVariable("variable_key", "variable_value");
      參數(shù):全局變量的鍵值

    10.設(shè)置環(huán)境變量
      Set an environment variable
      對應(yīng)腳本:
      postman.setEnvironmentVariable("variable_key", "variable_value");
      參數(shù):環(huán)境變量的鍵值

    11.判斷狀態(tài)碼
      Status code:Code is 200
      對應(yīng)腳本:
      tests["Status code is 200"] = responseCode.code != 400;
      參數(shù):狀態(tài)碼

    12.檢查code name 是否包含內(nèi)容
      Status code:Code name has string
      對應(yīng)腳本:
      tests["Status code name has string"] = responseCode.name.has("Created");
      參數(shù):預(yù)期code name包含字符串

    13.成功的post請求
      Status code:Successful POST request
      對應(yīng)腳本:
      tests["Successful POST request"] = responseCode.code === 201 || responseCode.code === 202;
      
     14.微小驗(yàn)證器
       Use Tiny Validator for JSON data            
       對應(yīng)腳本: 
        var schema = {
         "items": {
         "type": "boolean"
             }
         };
        var data1 = [true, false];
        var data2 = [true, 123];
        console.log(tv4.error);
        tests["Valid Data1"] = tv4.validate(data1, schema);
        tests["Valid Data2"] = tv4.validate(data2, schema);
        參數(shù):可以修改items里面的鍵值對來對應(yīng)驗(yàn)證json的參數(shù)

3.保存api,點(diǎn)擊save按鈕被冒,找到save as按鈕军掂,點(diǎn)擊



這時(shí)我們可以修改request name 也可以寫一下請求的描述



接下來新建一個(gè)接口集合,寫一個(gè)集合的名字,點(diǎn)擊保存

然后在左側(cè)功能區(qū)昨悼,找到collections欄目并點(diǎn)擊



可以看到剛保存的api集合

4.運(yùn)行api集合:找到頂層功能區(qū)蝗锥,找到runner按鍵,并點(diǎn)擊



選中剛才新建的api集合



點(diǎn)擊start test,可以在右側(cè)看到運(yùn)行的結(jié)果

5.命令行運(yùn)行接口集合:首先下載剛才創(chuàng)建的集合率触,點(diǎn)擊export,并保存到指定路徑


安裝postman命令行運(yùn)行工具newman

注:如果提示沒有npm命令點(diǎn)擊此鏈接
安裝好newman后终议,命令行執(zhí)行,可以看到執(zhí)行結(jié)果

如果想要報(bào)告加上 -H filename 參數(shù)即可

第三部分:高級(jí)篇

1.環(huán)境變量的使用:在測試的過程中我們可能有多套測試環(huán)境,對應(yīng)每一套測試環(huán)境的ip可能是不同的闲延,但是接口的請求痊剖,與參數(shù)又是一樣的,最笨的方法是每一個(gè)環(huán)境都寫一個(gè)測試集合垒玲,但是postman給我們提供了更為便捷的方法:使用環(huán)境變量
進(jìn)入請求欄目,找到no environment


點(diǎn)擊no environment,找到manager environments,點(diǎn)擊進(jìn)入頁面
![Uploading QQ20160812-2_610634.png . . .]


這個(gè)頁面可以進(jìn)行管理環(huán)境變量找颓,點(diǎn)擊add,添加一個(gè)環(huán)境變量

在這里輸入環(huán)境變量的名字合愈,環(huán)境變量是以鍵值對的形式存在的,輸入環(huán)境變量的鍵值對击狮,然后點(diǎn)擊add,進(jìn)行保存

回到請求測試區(qū)佛析,點(diǎn)擊no environment ,選擇剛才新建立的環(huán)境變量,同時(shí)可以點(diǎn)擊右側(cè)的眼睛來查看環(huán)境變量與全局變量(后面會(huì)給大家介紹)

現(xiàn)在使用剛才新建的環(huán)境變量來替換uri彪蓬,引用變量使用{{key}}的形式寸莫,將https://echo.getpostman.com用{{test_env}}來替換,并send發(fā)送請求

可以看到這里的結(jié)果和使用https://echo.getpostman.com是一樣的档冬,這樣一組接口就可以實(shí)現(xiàn)寫一次而通過更換環(huán)境變量來實(shí)現(xiàn)切換不同的環(huán)境

2.全局變量的使用:雖然我們可能有多個(gè)測試環(huán)境膘茎,但是我們的測試數(shù)據(jù)每個(gè)環(huán)境用的都是一組桃纯,對于postman相當(dāng)于只有一組全局變量,對應(yīng)多組環(huán)境變量
同樣的披坏,點(diǎn)擊manager environment



點(diǎn)擊globals态坦,進(jìn)入環(huán)境變量的管理頁面



全局變量globals同樣是以鍵值對的形式保存的,輸入鍵值對棒拂,點(diǎn)擊save

回到請求測試區(qū)伞梯,使用全局變量替換url的參數(shù),引用方法與環(huán)境變量的引用方法一致,替換后點(diǎn)擊send,查看結(jié)果

response依然以正確的內(nèi)容顯示出來

3.可以使用pre-request script功能來創(chuàng)建環(huán)境變量與全局變量帚屉,還有銷毀環(huán)境變量與全局變量,pre-request script是預(yù)置的腳本谜诫,執(zhí)行在請求之前
點(diǎn)擊pre-request script,進(jìn)入預(yù)設(shè)腳本頁面



點(diǎn)擊右側(cè)的腳本攻旦,并設(shè)置全局變量與環(huán)境變量,并將url進(jìn)行替換猜绣,點(diǎn)擊send發(fā)送,看到結(jié)果還是以正確的形式進(jìn)行展示



同樣的我們也可以在tests里面使用預(yù)置的腳本進(jìn)行設(shè)置與清除環(huán)境變量用法一樣

4.環(huán)境變量與全局變量都已經(jīng)進(jìn)行了設(shè)置敬特,我們還可以在tests里面進(jìn)行引用掰邢,這樣就解決了上下游數(shù)據(jù)互傳的問題了了
點(diǎn)擊tests,切換到測試腳本頁面,輸入腳本


結(jié)束語:postman還有很多很強(qiáng)大的功能,這里只是拋磚引玉伟阔,讓大家對postman有比較深刻的了解

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末辣之,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子皱炉,更是在濱河造成了極大的恐慌怀估,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件合搅,死亡現(xiàn)場離奇詭異多搀,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)灾部,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進(jìn)店門康铭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人赌髓,你說我怎么就攤上這事从藤。” “怎么了锁蠕?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵夷野,是天一觀的道長。 經(jīng)常有香客問我荣倾,道長悯搔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任舌仍,我火速辦了婚禮妒貌,結(jié)果婚禮上通危,老公的妹妹穿的比我還像新娘。我一直安慰自己苏揣,他們只是感情好黄鳍,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著平匈,像睡著了一般框沟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上增炭,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天忍燥,我揣著相機(jī)與錄音,去河邊找鬼隙姿。 笑死梅垄,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的输玷。 我是一名探鬼主播队丝,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼欲鹏!你這毒婦竟也來了机久?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤赔嚎,失蹤者是張志新(化名)和其女友劉穎膘盖,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體尤误,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡侠畔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了损晤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片软棺。...
    茶點(diǎn)故事閱讀 38,605評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖沉馆,靈堂內(nèi)的尸體忽然破棺而出码党,到底是詐尸還是另有隱情,我是刑警寧澤斥黑,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站眉厨,受9級(jí)特大地震影響锌奴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜憾股,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一鹿蜀、第九天 我趴在偏房一處隱蔽的房頂上張望箕慧。 院中可真熱鬧,春花似錦茴恰、人聲如沸颠焦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽伐庭。三九已至,卻和暖如春分冈,著一層夾襖步出監(jiān)牢的瞬間圾另,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工雕沉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留集乔,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓坡椒,卻偏偏與公主長得像扰路,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子倔叼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評論 2 348

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理汗唱,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,629評論 18 139
  • 02 你的收獲 你如果耐心的看完這篇文章横辆,你會(huì)獲得些許收獲 對postman的使用有一個(gè)基(全)本(面)認(rèn)知 可以...
    亭子青年閱讀 29,552評論 0 18
  • 博客已遷移讲衫,該文章也是我16年那會(huì)寫的了,經(jīng)過幾年P(guān)ostman已經(jīng)有不少變化识椰,最近換團(tuán)隊(duì)為了推廣這個(gè)工具,我對P...
    博客已遷移I米陽閱讀 45,674評論 29 92
  • 1.環(huán)境變量 很多時(shí)候深碱,我們在開發(fā)時(shí)會(huì)有多個(gè)部署位置腹鹉,比如一個(gè)用于測試,一個(gè)用于生產(chǎn)敷硅。通常的流程是先使用測試部署進(jìn)...
    瘦到55KG好嗎閱讀 4,975評論 3 9
  • 我們總會(huì)許下各種各樣的承諾功咒,比如:我以后再也不會(huì)遲到了,我死后由我的侄女繼承八達(dá)嶺那段長城绞蹦,我會(huì)為你摘下那顆最美的...
    你看得見我閱讀 313評論 0 1