使用POSTMAN自動(dòng)化接口測試步驟_第1頁
使用POSTMAN自動(dòng)化接口測試步驟_第2頁
使用POSTMAN自動(dòng)化接口測試步驟_第3頁
使用POSTMAN自動(dòng)化接口測試步驟_第4頁
使用POSTMAN自動(dòng)化接口測試步驟_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、Postman自動(dòng)化接口測試當(dāng)前環(huán)境:Window 7-64Postman 版本(免費(fèi)版):Chrome App v5.5.3在接口測試之前,要考慮一下幾個(gè)問題:如何判斷接口是否請求成功如何進(jìn)行接口批量、定期測試如何處理依賴接口問題(比如商品下單的接口必須要求先登錄)所以,接下來就主要分為3個(gè)部分進(jìn)行介紹,以分別解決這3個(gè)問題。接口結(jié)果判斷首先.既然是自動(dòng)化測試,那么我們肯定需要工具(Postman)或者代碼能幫我們直接判斷結(jié)果 是否符合預(yù)期。那么在接口測試上,大體就兩個(gè)思路:判斷請求返回的code是否符合預(yù)期判斷請求返回的內(nèi)容中是否包含預(yù)期的內(nèi)容(關(guān)鍵字)接下來我們看看如何利用Postman

2、來解決上述的問題:功能區(qū)在Postman中相關(guān)的功能在非常顯眼的地方,Tests功能的使用需要我們有一定的編程語言基 礎(chǔ),目前支持的腳本語言即為JavaScript。但比較好的一點(diǎn)是.我們不需要再去考慮上下文問 題以及運(yùn)行環(huán)境的問題,也就是說我們只需要在這邊完成結(jié)果邏輯判斷的代碼塊即可。而 Postman還為我們提供了一些常用的代碼模機(jī) 在Tests面板右邊的SNIPPETS功能區(qū)中,所以 對JavaScript不大了解問題也不大。代碼編寫相關(guān)將在下文進(jìn)行具體介紹。腳本相關(guān)先看上圖的代碼部分.我們可以發(fā)現(xiàn)responseCode s responseBody和tests三個(gè)變量(可直接 使用)

3、:responseCode :包含請求的返回的狀態(tài)信息(如:code)responseBody :為接口請求放回的數(shù)據(jù)內(nèi)容(類型為字符串)tests :為鍵值對形式,用于表示我們的測試結(jié)果是成功與否,最終展示在Test Results中。key :(如:code 200)我們可以用來當(dāng)做結(jié)果的一個(gè)描述value :其值為布爾型,ture表示測試通過,false表示測試失敗。所以上述代碼應(yīng)該不難理解了,而有了返回結(jié)果的數(shù)據(jù)以及表示結(jié)果成功與否的方式,那么我 們“接口結(jié)果判斷”的問題也就基本解決了。另外還有幾個(gè)比較常用的:responseTime :請求所耗時(shí)長postman :可以做的比較多,比

4、如獲取返回?cái)?shù)據(jù)的頭部信息:postman.getResponseHeader()設(shè)置全局變量:postman.setGlobalVariable(variable_key/ variable_value);更多功能可以查看官方文檔(需梯子)代碼模板Postman在SNIPPETS功能區(qū)中為我們提供的代碼模板已經(jīng)能解決大部分情況了,以下先挑幾 個(gè)跟結(jié)果判斷相關(guān)的進(jìn)行講解:Status code : Code is 200根據(jù)返回的Code判斷請求情況testsStatus code is 200 = responseCode.code = 200;判斷返回的內(nèi)容中是否存在“關(guān)鍵字。(tests的

5、key可修改,將不再強(qiáng)調(diào)) testsBody matches string = responseBody.has(這里可以改為你要判斷的關(guān)鍵字內(nèi)容”);如上文提到的:/判斷結(jié)果中是否存在access_token關(guān)鍵字testshas access_token“ = responseBody.has(”access_token);123456Response body: is equal to string判斷返回內(nèi)容是否跟預(yù)期完全相等ctestsHBody is correct = responseBody =這里可以改為你的預(yù)期內(nèi)容;12Response body: JSON value

6、check上文提到,responseBody為字符串類型 支持轉(zhuǎn)為Json格式var jsonData = JSON.parse(responseBody);testsYour test name = jsonData.value = 100;1Response time is less than 200ms判斷請求時(shí)長是否小于200ms,具體時(shí)長按情況自定義testsResponse time is less than 200msH = responseTime Request2- Request3o這邊接口名字可能有點(diǎn)誤導(dǎo)性,所以再強(qiáng)調(diào)一下:按目錄中從上到下的順序執(zhí)行(與字典排 序無關(guān))所

7、以有了這個(gè)默認(rèn)的執(zhí)行順序后,那么我們便可以把需要優(yōu)先執(zhí)行的接口放前面即可,比如把 “登錄接口 放在第一個(gè)。自定義執(zhí)行順序當(dāng)然如果只有默認(rèn)的一個(gè)執(zhí)行順序的話,通常沒法滿足我們復(fù)雜的業(yè)務(wù)需求,所以Postman 為我們提供了一個(gè)函數(shù):postman.setNextRequest(“填寫你要跳轉(zhuǎn)的接口名)支持我們跳轉(zhuǎn)到 指定接口繼續(xù)執(zhí)行,舉個(gè)例子:我們在運(yùn)行完Requestl接口成功后,不需要再運(yùn)行Request?而是直接跳至Requests ,那么我 可以在Requestl接口的Tests功能區(qū)中執(zhí)行跳轉(zhuǎn)代碼,如:這里需要注意幾點(diǎn):postman.setNextRequest()只在運(yùn)行集合測試的

8、時(shí)候生效.也就是說我們單獨(dú)運(yùn)行(Send)接口 Requestl時(shí).函數(shù)是不起作用的。當(dāng)我們運(yùn)行集合測試成功從Requestl - Requests后,如果Requests后面還有接口,那么后面 的接口仍然繼續(xù)按默認(rèn)順序執(zhí)行,即圖中的接口 Request4仍會(huì)被執(zhí)行。指定的跳轉(zhuǎn)接口必須屬于同一個(gè)集合中。setNextRequest()函數(shù)不管在Tests腳本中何處被調(diào)用,它都只在當(dāng)前腳本最后才被真正執(zhí)行。 比如我們將圖中的第二行與第一行互調(diào)后,那么在運(yùn)行跳轉(zhuǎn)函數(shù)后第二行代碼仍會(huì)被執(zhí)行。所以,利用setNextRequest()函數(shù),我們便可以按照條件跳過不必要的接口,或者建立我們自 己的一個(gè)邏

9、輯測試。數(shù)據(jù)傳遞在講數(shù)據(jù)傳遞前,先聊聊Postman中全局變量、環(huán)境切換的使用.全局變量全局變量的概念其實(shí)我們在上文中講Pre-request Script時(shí)有簡單提到,也就是說我們可以通過 腳本代碼來設(shè)置全局變量,我們可以看看運(yùn)行上文的腳本后的效果:我們可以看到運(yùn)行后,username和password兩個(gè)變量已經(jīng)被成功保存下來 那么我們在任意 接口中便都可以通過變量引用的語法如:(username)來使用它們。另外,Postman不僅支持代碼設(shè)置全局變量的方式,它還支持可視化操作:進(jìn)入對應(yīng)界面后,便可直接進(jìn)行管理:多環(huán)境區(qū)分與切換通常情況下,我們的接口都會(huì)分為測試版本和線上版本(或者更多)

10、,而他們的區(qū)別可能僅是 ULR不同,那么全局變量便不大合適解決這個(gè)問題。參數(shù)的創(chuàng)建可能你已經(jīng)注意到,上圖中我已經(jīng)建有幾個(gè)不同環(huán)境的參數(shù)“集合”了,再看一下:我在每個(gè)環(huán)境中都創(chuàng)建了一個(gè)host參數(shù).如:當(dāng)然,我們的環(huán)境參數(shù)也可以通過腳本的方式來進(jìn)行設(shè)置,函數(shù)為:注意,該參數(shù)只添加到你當(dāng)前選擇的環(huán)境的“參數(shù)集”中postman.setEnvironmentVariable(,variable_keyl,/ variablevalue11);12使用與切換環(huán)境“參數(shù)集”中的參數(shù)使用方式和全局變量一致,如圖中(host,不同環(huán)境的切換見下圖:解決依賴問題掌握以上的預(yù)備知識后,我們開始看看如何用Post

11、man解決存在依賴關(guān)系的接口測試。假設(shè)場景我們的接口 Requestl為登錄接口,登錄成功將會(huì)返回一個(gè)access_token字段作為標(biāo)識(已實(shí) 現(xiàn))。那么假設(shè)接口 Request3為一個(gè)下訂單的接口,需要攜帶登錄返回的access_token才能 正常訪問。思路保證Requestl在Requests之前被運(yùn)行將Requestl返回的access_token的值添加到環(huán)境變量”參數(shù)集中。Requests在請求時(shí)引用access_token的值將返回值存在“全局變量”或者“環(huán)境變量”中,視具體業(yè)務(wù)情況而定,該例中access_token的 值是與環(huán)境有關(guān)的,所以這里選擇使用環(huán)境變量集存儲(chǔ)。Pos

12、tman中的操作我們目錄中已保證Requestl接口優(yōu)先執(zhí)行Requestl中Tests的代碼情況:if(responseCode.code = 200 & responseBody.has(access_token)(如果code為200,并且返回的數(shù)據(jù)中存在access_token關(guān)鍵字.則認(rèn)為登錄成功testslogin = true;將返回的內(nèi)容轉(zhuǎn)為json格式,并且取到access_token內(nèi)容.添加到環(huán)境變量中var jsonData = JSON.parse(responseBody);/access_token的取值方式視具體的json數(shù)據(jù)結(jié)構(gòu)而定postman.setEnvironmentVariable(token,jsonData.result.access_token);跳轉(zhuǎn)到Requests接口postman.setNextRequest( Requests)else(testslogin = false;登錄失敗,可以選擇跳轉(zhuǎn)到對應(yīng)失敗后的處理接口進(jìn)行測試/postman.setNextRequest(HOther Request)123456789101112131415161718在接口 Requests中使用變量token :我這邊是將token放在頭部信息中,具體使用方式時(shí)接口參數(shù)規(guī)則而定。運(yùn)行并查看結(jié)果運(yùn)行集合測試

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論