?Postman除了前面介紹的一些功能,還有其他一些小功能在日常接口測試或許用得上。今天,我們就來盤點一下,如下所示:
1.數據驅動
????想要批量執行接口用例,我們一般會將對應的接口用例放在同一個Collection中,然后再通過Runner批量執行。這種方式適用于接口用例參數固定的情況下,但也存在另一個問題,如果每次運行時,接口參數都在變化,該如何操作了?
????認真看過前面文章的童鞋可能已經猜到,將變量參數化就可以了。但這種方式,存在也存在另外一個問題,就是需要每次將參數提前設置好,比如在Pre-request Script中設置如下:
pm.environment.set("username","Surpass")
pm.environment.set("password","Surpass")
使用Pre-request Script設置環境變量并進行賦值不論運行多少次,其實還是用固定的的數據進行測試。
?既然以上兩種方式都不能解決我們的問題,那將數據寫到文件中,然后從文件中讀取是不是可以?在Postman中其實也提供了這種方式。
這種用于存放測試數據的文件,一般稱之為測試數據集??
在Postman中測試數據集支持兩種格式csv和json
- csv格式
username,password
Surpass,Surpass
Kevin,Kevin
Diana,Diana
...
- json格式
[{"username": "Surpass","password": "Surpass"},{"username": "Kevin","password": "Kevin"},{"username": "Diana","password": "Diana"}
]
數據格式類似于表格,第一行對應變量名,后面數據對應相應的測試數據?
? 下面來看看操作步驟:
- 1、打開Run Collection界面,填寫運行次數、導入測試數據集,最后點擊Run Collection
- 2、運行結果如下所示:
2.定期任務
? ? Postman提供了一個Monitor功能,支持提交具有定時功能的測試任務,可以按設置的定時器執行接口用例,操作如下所示:
3.接口依賴
????接口依賴就是在執行一個接口時,其數據會依賴于其他接口,其本質上是一個接口數據傳遞的問題。例如:比如在刪除用戶時,必須要求攜帶相應的token,而token則是在用戶登錄后才會產生。
3.1 接口執行順序
1.默認執行順序
????在Postman中默認的執行順序,是按照在Collection中的目錄順序執行,即從上到下依次執行。
2.自定義執行順序
????如果按默認的目錄順序執行,通常無法其業務需求,好在Postman提供了一個函數 postman.setNextRequest("你要跳轉的接口名"),支持跳轉到指定接口執行。例如:在執行完接口用戶查詢后,跳過接口用戶新增,直接跳轉執行修改密碼,示例如下所示:
1、在用戶查詢接口Tests中添加如下代碼:
if(pm.response.code == 200 && pm.response.text().toString().indexOf("username")!=-1 ){// 如果 響應碼為 200 且 返回body中包含username,則代表查詢成功pm.test["query"] = true;var responseBody=pm.response.json()var username=responseBody.args.usernamevar password=responseBody.args.passwordpm.environment.set("modifyUsername",username)pm.environment.set("modifyPassword",password)console.log("go to request : 修改密碼")postman.setNextRequest("修改密碼")}
else{pm.test["query"] = false
}
- 2、在修改密碼接口中Tests中添加如下所示:
console.log("run 修改密碼接口")
var responseBody=pm.response.json()var username=responseBody.form.username
var password=responseBody.form.passwordconsole.log("修改密碼接口 - username",username,"修改密碼接口 - password",password)
- 3、查看運行結果如下所示:
??在使用自定義接口執行順序時,需要注意以下幾點:
postman.setNextRequest()僅在運行集合測試時生效,即在Run Collection時才生效,單獨運行接口時不生效?
postman.setNextRequest()在運行時,在跳轉時會忽略跳轉時中間包含的接口,跳轉后的接口如果仍然有接口則繼續運行后續接口,即如果有接口A/B/C/D/E/F,如果設置的跳轉條件為A->D,則最終執行的接口順序為A->D->E->F,B和C接口被忽略??
跳轉指定的接口必須位于同一個Collection內??
postman.setNextRequest()函數不管在Tests腳本中何處被調用,它都只在當前腳本最后才被真正執行。??
總結:
感謝每一個認真閱讀我文章的人!!!
作為一位過來人也是希望大家少走一些彎路,如果你不想再體驗一次學習時找不到資料,沒人解答問題,堅持幾天便放棄的感受的話,在這里我給大家分享一些自動化測試的學習資源,希望能給你前進的路上帶來幫助
軟件測試面試文檔
我們學習必然是為了找到高薪的工作,下面這些面試題是來自阿里、騰訊、字節等一線互聯網大廠最新的面試資料,并且有字節大佬給出了權威的解答,刷完這一套面試資料相信大家都能找到滿意的工作。