??Postman除了前面介紹的一些功能,還有其他一些小功能在日常接口測(cè)試或許用得上。今天,我們就來盤點(diǎn)一下,如下所示:
1.數(shù)據(jù)驅(qū)動(dòng)
????想要批量執(zhí)行接口用例,我們一般會(huì)將對(duì)應(yīng)的接口用例放在同一個(gè)Collection中,然后再通過Runner批量執(zhí)行。這種方式適用于接口用例參數(shù)固定的情況下,但也存在另一個(gè)問題,如果每次運(yùn)行時(shí),接口參數(shù)都在變化,該如何操作了?
????認(rèn)真看過前面文章的童鞋可能已經(jīng)猜到,將變量參數(shù)化就可以了。但這種方式,存在也存在另外一個(gè)問題,就是需要每次將參數(shù)提前設(shè)置好,比如在Pre-request Script中設(shè)置如下:
pm.environment.set("username","Surpass")
pm.environment.set("password","Surpass")
使用Pre-request Script設(shè)置環(huán)境變量并進(jìn)行賦值不論運(yùn)行多少次,其實(shí)還是用固定的的數(shù)據(jù)進(jìn)行測(cè)試。
?既然以上兩種方式都不能解決我們的問題,那將數(shù)據(jù)寫到文件中,然后從文件中讀取是不是可以?在Postman中其實(shí)也提供了這種方式。
這種用于存放測(cè)試數(shù)據(jù)的文件,一般稱之為測(cè)試數(shù)據(jù)集?
? ? 在Postman中測(cè)試數(shù)據(jù)集支持兩種格式csv和json
- csv格式
-
username,password Surpass,Surpass Kevin,Kevin Diana,Diana ...
- json格式
-
[ { "username": "Surpass", "password": "Surpass" }, { "username": "Kevin", "password": "Kevin" }, { "username": "Diana", "password": "Diana" } ]
數(shù)據(jù)格式類似于表格,第一行對(duì)應(yīng)變量名,后面數(shù)據(jù)對(duì)應(yīng)相應(yīng)的測(cè)試數(shù)據(jù)?
? ? 下面來看看操作步驟:
- 1、打開Run Collection界面,填寫運(yùn)行次數(shù)、導(dǎo)入測(cè)試數(shù)據(jù)集,最后點(diǎn)擊Run Collection
- 2、運(yùn)行結(jié)果如下所示:
2.定期任務(wù)
? ? Postman提供了一個(gè)Monitor功能,支持提交具有定時(shí)功能的測(cè)試任務(wù),可以按設(shè)置的定時(shí)器執(zhí)行接口用例,操作如下所示:
3.接口依賴
????接口依賴就是在執(zhí)行一個(gè)接口時(shí),其數(shù)據(jù)會(huì)依賴于其他接口,其本質(zhì)上是一個(gè)接口數(shù)據(jù)傳遞的問題。例如:比如在刪除用戶時(shí),必須要求攜帶相應(yīng)的token,而token則是在用戶登錄后才會(huì)產(chǎn)生。
3.1 接口執(zhí)行順序
1.默認(rèn)執(zhí)行順序
????在Postman中默認(rèn)的執(zhí)行順序,是按照在Collection中的目錄順序執(zhí)行,即從上到下依次執(zhí)行。
2.自定義執(zhí)行順序
????如果按默認(rèn)的目錄順序執(zhí)行,通常無法其業(yè)務(wù)需求,好在Postman提供了一個(gè)函數(shù) postman.setNextRequest("你要跳轉(zhuǎn)的接口名"),支持跳轉(zhuǎn)到指定接口執(zhí)行。例如:在執(zhí)行完接口用戶查詢后,跳過接口用戶新增,直接跳轉(zhuǎn)執(zhí)行修改密碼,示例如下所示:
1、在用戶查詢接口Tests中添加如下代碼:
if(pm.response.code == 200 && pm.response.text().toString().indexOf("username")!=-1 ){
// 如果 響應(yīng)碼為 200 且 返回body中包含username,則代表查詢成功
pm.test["query"] = true;
var responseBody=pm.response.json()
var username=responseBody.args.username
var password=responseBody.args.password
pm.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.password console.log("修改密碼接口 - username",username,"修改密碼接口 - password",password)
-
- 3、查看運(yùn)行結(jié)果如下所示:
?? 在使用自定義接口執(zhí)行順序時(shí),需要注意以下幾點(diǎn):
-
postman.setNextRequest()僅在運(yùn)行集合測(cè)試時(shí)生效,即在Run Collection時(shí)才生效,單獨(dú)運(yùn)行接口時(shí)不生效
postman.setNextRequest()在運(yùn)行時(shí),在跳轉(zhuǎn)時(shí)會(huì)忽略跳轉(zhuǎn)時(shí)中間包含的接口,跳轉(zhuǎn)后的接口如果仍然有接口則繼續(xù)運(yùn)行后續(xù)接口,即如果有接口A/B/C/D/E/F,如果設(shè)置的跳轉(zhuǎn)條件為A->D,則最終執(zhí)行的接口順序?yàn)锳->D->E->F,B和C接口被忽略?
跳轉(zhuǎn)指定的接口必須位于同一個(gè)Collection內(nèi)?文章來源:http://www.zghlxwxcb.cn/news/detail-450652.html
postman.setNextRequest()函數(shù)不管在Tests腳本中何處被調(diào)用,它都只在當(dāng)前腳本最后才被真正執(zhí)行。?文章來源地址http://www.zghlxwxcb.cn/news/detail-450652.html
到了這里,關(guān)于postman接口自動(dòng)化測(cè)試的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!