在能熟練使用postman運(yùn)行接口請求后,會(huì)遇到一些問題。例如:
我們的web網(wǎng)站一共有幾十個(gè)接口,測試的時(shí)候如果要切換環(huán)境,這個(gè)時(shí)候要每個(gè)接口都要修改url的根路徑,一個(gè)一個(gè)的改也太麻煩了;
還有時(shí)候我們經(jīng)常需要用到上一個(gè)接口的返回值,來作為下一個(gè)接口的數(shù)據(jù)來使用,要怎么把參數(shù)傳遞過去呢;
作為接口測試的話,驗(yàn)證接口返回結(jié)果是否正確,需要斷言來判定這個(gè)接口的運(yùn)行結(jié)果是否符合期望,這個(gè)時(shí)候又該怎么做。
在postman中,這些問題都有解決方案,下面跟我一起來看一下吧。
一、設(shè)置全局(環(huán)境)變量
??postman中可以設(shè)置全局和環(huán)境變量,以便可以存儲一些例如:url、token值、測試參數(shù)等數(shù)據(jù)。
變量的設(shè)置
是通過key-value的形式來存儲。
例如:url:http://test.baidu.com
變量的使用:
通過{{變量key}}來調(diào)用關(guān)鍵字獲取值
例如:{{url}},可以放在需要填寫參數(shù)的任何位置。
如何創(chuàng)建變量:
??點(diǎn)擊postman界面右邊的齒輪,在彈窗中可以選擇創(chuàng)建全局變量、導(dǎo)入變量文件、創(chuàng)建環(huán)境變量。
?文章來源地址http://www.zghlxwxcb.cn/news/detail-579007.html
添加變量:
??全局變量在創(chuàng)建后,任何時(shí)候都可以獲取到,而環(huán)境變量只有在設(shè)置為當(dāng)前環(huán)境時(shí),才會(huì)獲取到此環(huán)境中的變量。這個(gè)看個(gè)人需要來設(shè)置是全局變量還是環(huán)境變量,例如我把url、賬號密碼設(shè)為環(huán)境變量,因?yàn)橛星袚Q不同環(huán)境的需要。
添加全局變量:
?添加環(huán)境變量
變量的引用:
??如圖所示,是一個(gè)環(huán)境變量的設(shè)置和引用,當(dāng)鼠標(biāo)懸浮在我們引用的變量{{key}}上時(shí),會(huì)顯示當(dāng)前變量的值。
二、參數(shù)傳遞和斷言
??在postman中有專門的代碼區(qū)域,可以通過js代碼語言來實(shí)現(xiàn)一些自定義操作。在Pre-request Script區(qū)域,是請求發(fā)送前的代碼區(qū),比如我們需要對密碼進(jìn)行md5加密后發(fā)送,就可以使用js中的方法先進(jìn)行加密。在Tests區(qū)域中,可以通過獲取返回參數(shù)的值進(jìn)行斷言,斷言失敗的接口會(huì)顯示為false結(jié)果。
如何進(jìn)行參數(shù)傳遞:
??比如支付接口,需要上一個(gè)下單接口返回的訂單號來作為入?yún)ⅰ?/p>
??這個(gè)時(shí)候,首先要在下單接口的Tests區(qū)域中,獲取到返回?cái)?shù)據(jù)的訂單號,然后存儲為全局變量;
??接著在支付接口中,入?yún)⒅械挠唵翁栔堤顚憺槲覀冊O(shè)置的全局變量,這樣就實(shí)現(xiàn)了一次參數(shù)傳遞。
下面我們來看一下這些方法都該怎么寫:
2.1變量的設(shè)置
這些方法是在postman中對全局(環(huán)境)變量的操作方法。
獲取變量
獲取全局變量:
? ? ? ? pm.globals.get(“variable_key”);
獲取當(dāng)前環(huán)境變量:
pm.environment.get(“variable_key”);
獲取普通變量:
pm.variables.get(“variable_key”);
設(shè)置變量
設(shè)置全局變量:
pm.globals.set(“variable_key”, “variable_value”);
設(shè)置當(dāng)前環(huán)境變量:
pm.environment.set(“variable_key”, “variable_value”);
清空變量值
清空當(dāng)前環(huán)境變量:
pm.environment.unset(“variable_key”);
清空全局變量:
pm.globals.unset(“variable_key”);
2.2返回?cái)?shù)據(jù)的判斷
這里需要注意的是,網(wǎng)上有一些教程比較老了,例如這種形式的寫法:
tests[“Status code is 200”] = responseCode.code === 200;
這樣的寫法官方文檔中已經(jīng)表示不推薦使用,而是推薦統(tǒng)一的js書寫格式。
判斷返回狀態(tài)碼
pm.test(“返回狀態(tài)碼為200”, function () {
??pm.response.to.have.status(200);
});
判斷返回header中是否有“Content-Type”字段
pm.test(“Content-Type字段存在”, function () {
??pm.response.to.have.header(“Content-Type”);
});
判斷接口返回內(nèi)容匹配一個(gè)字符串
pm.test(“返回內(nèi)容匹配字符串”, function () {
pm.response.to.have.body(“response_body_string”);
});
判斷返回參數(shù)中包含某個(gè)字符串
pm.test(“字符串包含在返回值中”, function () {
pm.expect(pm.response.text()).to.include(“想要搜索的字符串”);
});
判斷接口響應(yīng)時(shí)間
pm.test(“接口響應(yīng)時(shí)間小于200ms”, function () {
pm.expect(pm.response.responseTime).to.be.below(200);
});
把responseBody轉(zhuǎn)為json字符串
var Jsondata =JSON.parse(responseBody);
把xml格式返回轉(zhuǎn)換為json格式
var jsonObject = xml2Json(responseBody);
獲取并判斷返回參數(shù)的值
//假設(shè)返回參數(shù)為:{“code” : 0}
pm.test(“斷言code字段值是否為0”,function(){
??var jsonData = pm.response.json();?
? ? ? ? //創(chuàng)建一個(gè)變量,值為返回參數(shù)(json格式)
??pm.expect(jsonData.code).to.eql(0);?
? ? ? ? ?//判斷返回參數(shù)中code字段值為0
});
如果我的博客對你有幫助、如果你喜歡我的博客內(nèi)容,請 “點(diǎn)贊” “評論” “收藏” 一鍵三連哦!
?
?文章來源:http://www.zghlxwxcb.cn/news/detail-579007.html
?
?
到了這里,關(guān)于Postman接口測試 —— 設(shè)置全局變量、參數(shù)傳遞、斷言的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!