柚子快報邀請碼778899分享:科普文:一文搞懂Postman
柚子快報邀請碼778899分享:科普文:一文搞懂Postman
1. 概敘
1.1 Postman簡介
Postman是一款強大的接口測試工具,?主要用于測試HTTP請求,?支持各種HTTP請求方法,?包括GET、?POST、?PUT、?DELETE等,?并且提供了豐富的功能來模擬和測試各種網(wǎng)絡(luò)請求。?
Postman官網(wǎng)上這樣介紹它:"Manage all of your organization's APIs in Postman, with the industry's most complete API development environment."看的出來Postman是功能強大的API測試的工具 Postman 提供功能強大的 Web API 和 HTTP 請求的調(diào)試,它能夠發(fā)送任何類型的HTTP 請求 (GET, POST, PUT, DELETE...),并且能附帶任何數(shù)量的參數(shù)和 Headers。不僅如此,它還提供測試數(shù)據(jù)和環(huán)境配置數(shù)據(jù)的導(dǎo)入導(dǎo)出,付費的 Post Cloud 用戶還能夠創(chuàng)建自己的 Team Library 用來團隊協(xié)作式的測試,并能夠?qū)⒆约旱臏y試收藏夾和用例數(shù)據(jù)分享給團隊。
1.2 Postman功能特性說明
可參考:postman接口測試工具詳解【全】_postman工具-CSDN博客
Postman的主要功能和特點包括:?
支持各種HTTP請求方法:?Postman支持HTTP協(xié)議的所有請求方式,?包括GET、?POST、?HEAD、?PUT、?DELETE等,?滿足各種測試需求。?請求參數(shù)設(shè)置:?可以設(shè)置請求的URL參數(shù)、?請求頭、?請求體等,?支持表單格式和JSON格式的數(shù)據(jù)發(fā)送。?模擬登錄和Cookies管理:?可以模擬登錄過程,?保存登錄后的Cookies,?以便在后續(xù)的請求中使用。?數(shù)據(jù)同步和團隊協(xié)作:?支持數(shù)據(jù)同步功能,?可以在不同設(shè)備上同步測試數(shù)據(jù);?支持團隊協(xié)作,?可以推送請求給團隊成員執(zhí)行或繼續(xù)開發(fā)。?接口開發(fā)和測試全流程支持:?從接口開發(fā)到測試,?再到模擬測試和監(jiān)控,?Postman提供了全面的支持。?內(nèi)置腳本和測試自動化:?支持編寫內(nèi)置腳本進行接口測試自動化,?提高測試效率。?
使用Postman進行接口測試的基本步驟包括:?
創(chuàng)建請求:?在Postman中創(chuàng)建一個新的請求,?設(shè)置請求方法、?URL、?請求頭和請求體。?發(fā)送請求:?根據(jù)需要設(shè)置的各種參數(shù),?發(fā)送HTTP請求。?查看響應(yīng):?查看服務(wù)器的響應(yīng),?包括狀態(tài)碼、?響應(yīng)體等。?測試和驗證:?使用內(nèi)置的測試腳本對響應(yīng)進行驗證,?確保接口按照預(yù)期工作。?數(shù)據(jù)同步和團隊協(xié)作:?利用Postman的同步功能,?確保團隊成員使用最新數(shù)據(jù);?通過分享請求,?讓團隊成員繼續(xù)執(zhí)行或修改。?
Postman還支持JSON格式的數(shù)據(jù)發(fā)送和接收,?這對于處理結(jié)構(gòu)化數(shù)據(jù)非常有用。?此外,?Postman還提供了豐富的文檔和教程,?幫助用戶快速上手和使用這款工具。
1.3 Postman下載及安裝
Postman有2種安裝方式,一種是作為Chrome的插件,另一種是客戶端形式,建議使用客戶端安裝
1. Postman下載 官網(wǎng)下載地址 :https://www.getpostman.com/downloads/
2. 安裝過程 默認安裝即可,安裝完成后,注冊登錄
2. Postman詳細操作說明
2.1 Postman功能視圖
詳細功能可以參考Postman官方 文檔, 打開軟件,就可以看到Postman主界面,如下圖所示17個功能菜單和說明:
1.?Collections:在Postman中,Collection類似文件夾,可以把同一個項目的請求放在一個Collection里方便管理和分享,Collection里面也可以再建文件夾。如果做API文檔的話,可以每個API對應(yīng)一條請求,如果要把各種輸入都測到的話,就需要每條測試一條請求了。
2.?上面的黑字注冊是請求的名字,如果有Request description的話會顯示在這下面。下面的藍字是保存起來的請求結(jié)果,點擊可以載入某次請求的參數(shù)和返回值。我會用這個功能給做客戶端的同事展示不同情況下的各種返回值。保存請求的按鈕在15.
3.?選擇HTTP Method的地方,各種常見的不常見的非常全。
4.?請求URL,兩層大括號表示這是一個環(huán)境變量,可以在16的位置選擇當前的environment,環(huán)境變量就會被替換成該environment里variable的值。
5.?點擊可以設(shè)置URL參數(shù)的key和value
6.?點擊發(fā)送請求
7.?點擊保存請求到Collection,如果要另存為的話,可以點擊右邊的下箭頭
8.?設(shè)置鑒權(quán)參數(shù),可以用OAuth之類的
9.?自定義HTTP Header,有些因為Chrome原因不能自定義的需要另外裝一個插件Interceptor,在16上面一行的衛(wèi)星那里
10.?設(shè)置Request body,13那里顯示的就是body的內(nèi)容
11.?在發(fā)起請求之前執(zhí)行的腳本,例如request body里的那兩個random變量,就是每次請求之前臨時生成的。
12.?在收到response之后執(zhí)行的測試,測試的結(jié)果會顯示在17的位置
13.?有四種形式可以選擇,form-data主要用于上傳文件。x-www-form-urlencoded是表單常用的格式。raw可以用來上傳JSON數(shù)據(jù)
14.?返回數(shù)據(jù)的格式,Pretty可以看到格式化后的JSON,Raw就是未經(jīng)處理的數(shù)據(jù),Preview可以預(yù)覽HTML頁面
15.?點擊這里把請求保存到2的位置
16.?設(shè)置environment variables和global variables,點擊右邊的x可以快速查看當前的變量。
17.?測試執(zhí)行的結(jié)果,一共幾個測試,通過幾個。
2.2 測試工具
測試工具主要包括三部分,在發(fā)起請求之前運行的Pre-request,在收到應(yīng)答之后運行的Test,和一次運行所有請求的Collection Runner.
1. Pre-request
預(yù)請求腳本是與在發(fā)送請求之前執(zhí)行的收集請求相關(guān)聯(lián)的代碼片段。
Pre-request和Test用的語言都是JavaScript,Postman在一個沙盒里執(zhí)行代碼,提供給用戶的庫和函數(shù)可以在這里查看。而常用的功能都可以通過右邊的Code Snippets實現(xiàn),點擊就可以插入到代碼區(qū)域。 ?
2. Test測試
使用Postman,您可以使用JavaScript語言為每個請求編寫和運行測試.
測試例子 設(shè)置環(huán)境變量
pm.environment.set("variable_key", "variable_value");
獲取環(huán)境變量
pm.environment.get("variable_key");
獲取環(huán)境變量(其值是字符串化對象)
var array = JSON.parse(pm.environment.get("array"));var obj = JSON.parse(pm.environment.get("obj"));
清除環(huán)境變量
pm.environment.unset("variable_key");
設(shè)置全局變量
pm.globals.set("variable_key", "variable_value");
獲取全局變量
pm.globals.get("variable_key");
清除全局變量
pm.globals.unset("variable_key");
得到一個變量 此函數(shù)在全局變量和活動環(huán)境中搜索變量。
pm.variables.get("variable_key");
檢查響應(yīng)主體是否包含字符串
pm.test("Body matches string", function () { pm.expect(pm.response.text()).to.include("string_you_want_to_search");});
檢查響應(yīng)主體是否等于字符串
pm.test("Body is correct", function () { pm.response.to.have.body("response_body_string");});
檢查JSON值
pm.test("Your test name", function () { var jsonData = pm.response.json(); pm.expect(jsonData.value).to.eql(100);});//var jsonData = JSON.parse(responseBody);//tests["list"] = jsonData["lists"][0] == "11";
內(nèi)容類型存在
pm.test("Content-Type is present", function () { pm.response.to.have.header("Content-Type");});
響應(yīng)時間小于200毫秒
pm.test("Response time is less than 200ms", function () { pm.expect(pm.response.responseTime).to.be.below(200);});
代碼名稱包含一個字符串
pm.test("Status code name has string", function () { pm.response.to.have.status("Created");});
成功的POST請求狀態(tài)代碼
pm.test("Successful POST request", function () { pm.expect(pm.response.code).to.be.oneOf([201,202]);});
將XML主體轉(zhuǎn)換為JSON對象
var jsonObject = xml2Json(responseBody);
獲取HTML并取出其中的值
//獲取HTMLconst $ = cheerio.load(responseBody);//獲取input標簽中name屬性值為SignValue的數(shù)據(jù)中屬性為value的值var signvalue=$('input[name=SignValue]').attr('value');獲取textarea標簽中name值為SignValue的數(shù)據(jù)中文本屬性text的值var signvalue=$('textarea[name=SignValue]').text();
3. Collection Runner
當編寫了很多測試之后,就可以使用Collection Runner來自動運行整個Collection了,入口就在主界面最上面一行的Runner。選好Collection、Environment,如果有需要還可以載入JSON和CSV作為數(shù)據(jù)源。點擊Start Run,就可以看到結(jié)果了。
runner是postman中執(zhí)行collection集合中請求的一種用法,可以調(diào)整執(zhí)行的順序和用例的數(shù)量。
可以記錄執(zhí)行結(jié)果及導(dǎo)出結(jié)果報告(json格式的報告)。
運行測試集合
選擇一個測試集合,啟動運行器。
參數(shù)化(數(shù)據(jù)驅(qū)動測試)
1)json文件數(shù)據(jù)驅(qū)動
創(chuàng)建json文件,并設(shè)置數(shù)據(jù):
使用文件中的鍵名參數(shù)化postman正文數(shù)據(jù)值。
斷言也需要進行參數(shù)化:
使用Runner運行器,導(dǎo)入、并查看數(shù)據(jù)文件
因為有四條數(shù)據(jù),迭代次數(shù)就默認給設(shè)置成了4次。
它會每次迭代從文件中讀取一行數(shù)據(jù)進行參數(shù)化,并允許。
直到四次迭代結(jié)束,數(shù)據(jù)使用完畢。
做好設(shè)置,保存響應(yīng)結(jié)果,點擊運行集合。
2)csv文件數(shù)據(jù)驅(qū)動
后續(xù)操作過程見json數(shù)據(jù)驅(qū)動過程。
4. newman插件的使用
newman是postman的插件,是用于命令行運行測試集合的一個插件。
1、安裝
先安裝nodejs,通過npm -v驗證
最好安裝16版本以上。
如果出現(xiàn)安裝進度慢,默認鏡像源(軟件所在的服務(wù)器)在國外,可以更新到國內(nèi)的鏡像源服務(wù)器上去。
npm config set registry?http://registry.npm.taobao.org
2、使用newman運行collection
前提準備:
測試集合文件,是通過postman導(dǎo)出的json文件。環(huán)境變量文件,是需要通過postman導(dǎo)出的json文件。數(shù)據(jù)驅(qū)動文件:data.json、data.csv
1) 只運行一個collection集合(不涉及到環(huán)境變量、不涉及參數(shù)化)
導(dǎo)出集合文件為:zhuluoji_collection.json
就可以使用newman運行這個集合文件了:
格式: newman run 集合文件的全路徑
2) 指定迭代次數(shù) : -n
newman run e:\zhuluoji_collection.json -n 2
3) 指定局部環(huán)境變量:-e
導(dǎo)出environment環(huán)境變量文件。
newman run e:\zhuluoji_collection.json -e e:\BaiDuTrans_environment.json -n 2
4) 指定全局環(huán)境變量:-g
導(dǎo)出globals環(huán)境變量文件:
newman run e:\BaiDuTrans_collection.json -e e:\BaiDuTrans_environment.json -g e:\globals.json -n 1
5) 指定參數(shù)化文件的:-d
可以支持json和csv文件進行參數(shù)化的。
newman run e:\MiFeng_collection.json -d e:\data.json
newman run e:\MiFeng_collection.json -d e:\data.csv
3、生成報告
1) cli過格式報告
在cmd下運行的結(jié)果報告的展示形似。
2) json格式報告
-r json : 指定輸出報告的格式是json格式。
newman run e:\MiFeng_collection.json -d e:\data.csv -r json --reporter-json-export e:\data\result1212.json
3) html格式報告
-r html : 指定輸出報告的格式為html格式
newman run e:\MiFeng_collection.json -d e:\data.csv -r html --reporter-html-export e:\data\result1212.html
但是html格式輸出,需要安裝插件才能使用。
npm install -g newman-reporter-html
4) 集成命令到批處理文件中(bat文件)
創(chuàng)建一個txt文件,重命名為run.bat文件,將其編碼改為utf-8,將上面可執(zhí)行的newman命令復(fù)制到該文件即可。
保存后,雙擊該文件運行。
4、newman+jenkins集成做定時任務(wù)
1、配置jenkins支持newman的環(huán)境變量
需要配置newman和node的路徑,通過where命令來獲取。
可參考:Postman接口測試工具最全實用教程
2.3 變化的參數(shù)
1. 使用變量 現(xiàn)在使用參數(shù)都是寫死的, 那么如果想要測試賬號密碼參數(shù)使用其它值有沒有異常怎么辦呢? 這里就需要使用變量 引用變量的語法:{{變量名}} Pre-request Script 和 Tests都可以設(shè)置變量,區(qū)別在于:Pre-request Script 中的腳本是在執(zhí)行請求之前運行,而Tests 中的腳本則是在請求完成之后執(zhí)行。2. 測試數(shù)據(jù)集 在執(zhí)行Collection Runner時可以選擇CSV或json格式的文件作為測試數(shù)據(jù)集 CSV文件格式:
JSON文件格式:
在執(zhí)行Collection Runner時使用CSV/JSON文件
3. 定期任務(wù) Postman 提供了一個 Monitors (監(jiān)視器)功能,支持我們提交一個測試任務(wù),按照設(shè)置的定時器進行運行,如每小時測試一次,具體操作如下:
2.4 接口依賴的問題
1. 接口執(zhí)行順序 首先,說明一下,接下來說的接口都是默認屬于同一個集合 (Collections) 中的。 接口的執(zhí)行順序其實就是按照這邊目錄中的順序(從上到下);所以有了這個默認的執(zhí)行順序后,那么我們便可以把需要優(yōu)先執(zhí)行的接口放前面即可,比如把“登錄接口”放在第一個。2. 自定義執(zhí)行順序 當然,如果只有默認的一個執(zhí)行順序的話,通常沒法滿足我們復(fù)雜的業(yè)務(wù)需求,所以 Postman 為我們提供了一個函數(shù):postman.setNextRequest("填寫你要跳轉(zhuǎn)的接口名") 我們可以在接口的 Tests 功能區(qū)中執(zhí)行跳轉(zhuǎn)代碼,如:
這里需要注意幾點:
postman.setNextRequest() 只在運行集合測試的時候生效,也就是說我們單獨運行 (Send) 接口 時,函數(shù)是不起作用的。當我們運行集合測試成功從 Request1 -> Request3 后,如果 Request3 后面還有接口,那么后面的接口仍然繼續(xù)按默認順序執(zhí)行,即圖中的接口 Request4 仍會被執(zhí)行。指定的跳轉(zhuǎn)接口必須屬于同一個集合中。setNextRequest() 函數(shù)不管在 Tests 腳本中何處被調(diào)用,它都只在當前腳本最后才被真正執(zhí)行。比如我們將圖中的第二行與第一行互調(diào)后,那么在運行跳轉(zhuǎn)函數(shù)后第二行代碼仍會被執(zhí)行。
3. 解決依賴的思路
保證 Request1 在 Request3 之前被運行將 Request1 返回的 access_token 的值添加到環(huán)境變量"參數(shù)集"中。Request3 在請求時引用 access_token 的值
2.5 預(yù)處理和斷言
這兩個模塊采用的是js語法腳本。
1、預(yù)處理 -pre-request script模塊
在當前請求發(fā)送之前要處理的腳本,我們能做點什么事情?
用于處理請求數(shù)據(jù)(獲取、設(shè)置、加密等)
在發(fā)送當前請求之前發(fā)送另外一個請求(OA的登錄和上傳圖片)。
1)發(fā)送一個get請求
2)獲取參數(shù)(全局環(huán)境、局部環(huán)境、集合變量)
3)修改、設(shè)置參數(shù)(掌握)
4)發(fā)送一個post類型的請求
//發(fā)一次登錄請求??
//是在OALoadImage前要處理的腳本
//實現(xiàn)發(fā)送一個post請求
var postInfo = {
"url":"http://xxxx/MiFengOA/index.php?a=check&m=login&d=&ajaxbool=true&rnd=607798",
"method":"post",
"body":{
"mode":"urlencoded",
"urlencoded":"rempass=0&jmpass=false&device=1650464000397<ype=0&adminuser=YWRtaW4:&adminpass=YTg5ODM5ODM:&yanzm="
}
}
pm.sendRequest(postInfo, function (err, response) {
//如果響應(yīng)正文是json格式的,就可以response.json()輸出響應(yīng)正文
//如果響應(yīng)正文是不是json格式的,就輸出字符粗格式:response.text()
console.log(response.json());
});
2、斷言-tests
在當前請求發(fā)送之后要處理的腳本,是作為斷言來使用的。
發(fā)送完當前請求之后,對響應(yīng)的結(jié)果進行判斷、斷言
斷言的內(nèi)容可以是:響應(yīng)正文、響應(yīng)狀態(tài)碼、響應(yīng)頭部的字段呢?響應(yīng)時間等
響應(yīng)正文斷言:包含子字符串(掌握)和json斷言(掌握)
其他斷言方式了解:響應(yīng)狀態(tài)碼斷言、響應(yīng)時間斷言等
//實現(xiàn)斷言,是在當前請求發(fā)送完成之后,得到響應(yīng)結(jié)果才能進行的。
//1、判斷響應(yīng)狀態(tài)碼是否符合預(yù)期,并不能完全確定業(yè)務(wù)是否是正確的
pm.test("響應(yīng)狀態(tài)碼是200?", function () {
//實現(xiàn)判斷語法
//pm.response: http的響應(yīng)報文(四大組成部分)
// to.have.status(200):是否包含狀態(tài)碼200呢?
pm.response.to.have.status(200);
});
//了解就行
tests["響應(yīng)狀態(tài)碼是否為200?"] = responseCode.code === 200;
// 2、響應(yīng)正文做斷言(重點掌握)
// 以字符串格式的正文形式斷言(都行)
// 大串(實際結(jié)果)包小串(預(yù)期結(jié)果)。
// pm.response.text():將響應(yīng)報文中的正文部分轉(zhuǎn)化為字符串格式
pm.test("大串包小串??", function () {
pm.expect(pm.response.text()).to.include("用戶名不符合格式要求");
});
//responseBody :獲取的是響應(yīng)正文
tests["響應(yīng)正文包括指定字符串?"] = responseBody.has("用戶名不符合格式要求");
// 以json格式的正文進行i斷言(響應(yīng)報文頭部的content-type為json的可以用)
//直接使用json斷言
pm.test("Your test name", function () {
var jsonData = pm.response.json();
console.log(jsonData.trans_result[0].dst)
pm.expect(jsonData.trans_result[0].dst).to.eql("蘋果");
});
//響應(yīng)時間:從發(fā)出請求,到接收到響應(yīng)結(jié)果的時間差就是響應(yīng)時間,是接口的一個性能指標
// 假設(shè)要求,該請求響應(yīng)時間不應(yīng)該高于200ms
pm.test("響應(yīng)時間的判斷:", function () {
//pm.response.responseTime:實際的響應(yīng)時間
// to.be.below:低于某個指定的值
pm.expect(pm.response.responseTime).to.be.below(400);
});
2.6 使用postman進行HTTP接口測試
詳細功能可以參考:Postman接口測試工具最全實用教程
1、get請求
get請求不需要有請求的正文數(shù)據(jù)的,其他都要(url和請求方式必須,可選的是頭部字段)。
1)百度翻譯接口? ?自己再去做一遍即可。
請求地址:
url:https://fanyi-api.baidu.com/api/trans/vip/translate
請求方式:get
params:q=apple&from=auto&to=zh&appid=xxxxx&salt=888888&sign=a9adc2d687fbacecc3b5059b9ccedc95
2)B站視頻最新評論接口
url:https://api.bilibili.com/x/v2/reply/main
請求方式:get
params: callback=jQuery17207775567550413909_1655259544202&jsonp=jsonp&next=0&type=1&oid=248143527&mode=2&plat=1&_=1655259574655
在postman中實現(xiàn)上述的參數(shù),形成參數(shù)用例(直接報錯,觸發(fā)防盜鏈功能):
視頻類的網(wǎng)站都有一個防盜鏈功能,就算抓到了請求的基本參數(shù),你也不能通過工具獲取評論的參數(shù),其實是通過一個頭部字段進行的限制,這個字段就起到了防盜鏈的作用。
referer:一般只是當前視頻所在的地址,用它做防盜鏈的作用,必須指定referer,而且referer的值和當前視頻的地址一致,你才有權(quán)限獲取評論信息。
至于使用哪一個字段來做防盜鏈,開發(fā)設(shè)計的,只不過使用referer的居多。
解決方法:
postman的header標簽下,添加一個頭字段referer(可以抓包獲?。?。
2、post請求--x-www-form-urlencoded
除了get所需的所有參數(shù)(請求方式、請求地址、請求頭部等),還需要請求正文數(shù)據(jù)。
1)百度翻譯
使用post請求實現(xiàn)百度翻譯功能,content-type一定是x-www-form-urlencoded
https://fanyi-api.baidu.com/api/trans/vip/translate?q=apple&from=auto&to=zh&appid=xxxxxx&salt=888888&sign=a9adc2d687fbacecc3b5059b9ccedc95
請求地址:
https://fanyi-api.baidu.com/api/trans/vip/translate
請求類型:post
請求正文:
q:applefrom:autoto:zhappid:xxxxxsalt:888888sign:a9adc2d687fbacecc3b5059b9ccedc95請求頭部:content-type:x-www-form-urlencoded
2) 電商前臺的注冊接口
特點是post請求,content-type要求是以x-www-form-urlencoded。
請求的地址:
http://xxxxx/qftest/index.php?c=user&a=register&step=submit
請求的方式:post
請求的參數(shù):拼接在地址欄了
請求的數(shù)據(jù):
username: 給一個已注冊的數(shù)據(jù)、空、4位、數(shù)字開頭、正常未注冊等emailpasswordrepasswordagree
請求的頭部:content-type:application/x-www-form-urlencoded
3)電商登錄接口
請求地址:
http://xxxxx/qftest/user/login.html?step=submit
請求方式: post
請求正文:
username:bk2201_00001password:200c6d94e583e62c6964de3acdc723e5
請求頭部:content-type:application/x-www-form-urlencoded
3、post請求--form-data
content-type類型位form-data,數(shù)據(jù)傳輸仍然是鍵值對,數(shù)據(jù)類型可以是文件(word、excel、圖片、視頻等)。
1)蜜鋒OA系統(tǒng)登錄功能--urlencoded
請求url:
http://xxxxx/MiFengOA/index.php?a=check&m=login&d=&ajaxbool=true&rnd=607798
請求方式:post
請求的數(shù)據(jù):
請求頭部:content-type: x-www-form-urlencoded
2)蜜鋒OA系統(tǒng)上傳圖片的功能--form-data
只有登錄成功之后才能夠上傳圖片,登錄失敗(沒有登錄)不能上傳。
請求地址:
http://xxxxx/MiFengOA/index.php?a=upfile&m=upload&d=public&maxsize=80&uptype=image&thumbnail=150x150&ajaxbool=true&rnd=322198
請求方式:post
請求數(shù)據(jù):file: (binary)
請求頭部:content-type:multipart/form-data
3) 多接口的實現(xiàn)-cookie的使用
cookie作為一種鑒權(quán)的方式,登錄某個系統(tǒng)之后,再次訪問系統(tǒng)的不同頁面,都能保持登錄狀態(tài),就是因為后續(xù)的所有請求都攜帶了cookie的參數(shù)。
第一次登錄成功,postman或者瀏覽器,可以將登錄所用的用戶名及密碼等記錄在本地。
再在訪問其他接口的時候,瀏覽器發(fā)出的請求就會自動化從cookie管理器中攜帶和當前主機相關(guān)的cookie及值,這樣就一直保持了登錄狀態(tài)。
在postman中的兩個請求,登錄和上傳簽名。
如果希望通過postman的cookie管理器,來共享cookie值,就可以調(diào)整他倆的現(xiàn)后執(zhí)行順序即可,先登錄再上傳即可,每次都能動態(tài)獲取最新的cookie值,一般不會出錯。
如果不想使用cookie管理器,不想先登錄怎么辦,只能手動給上傳接口添加一個cookie參數(shù),應(yīng)為cookie是有時效性的,過一段時間就不能用了。
4、post請求-content-type:application/json
json數(shù)據(jù)結(jié)構(gòu)作為請求的正文數(shù)據(jù)及響應(yīng)正文數(shù)據(jù)是最常見的用法,將來大家接觸的80%都是這種格式的。
將來項目中json數(shù)據(jù)會更復(fù)雜、內(nèi)容會更多,上百行數(shù)據(jù)都很正常。
住邏輯的登錄的接口來演示。
請求地址:
https://xxx/designer_api/account/login_quick
請求的方式:post
請求的數(shù)據(jù):
{"phone":"xxx","code":"123456","messageType":3,"key":"a2088d42-2eb0-4194-aada-e3a0019ed5f1","registration_type":1,"channel":"zhulogic","unionid":""}
請求的頭部
Content-Type:application/json;charset=UTF-8
5、內(nèi)置腳本說明
1. 清除一個全局變量
Clear a global variable
對應(yīng)腳本:
postman.clearGlobalVariable("variable_key");
參數(shù):需要清除的變量的key
2.清除一個環(huán)境變量
Clear an environment variable
對應(yīng)腳本:
postman.clearEnvironmentVariable("variable_key");
參數(shù):需要清除的環(huán)境變量的key
3.response包含內(nèi)容
Response div: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 div:Convert XML div to a JSON Object
對應(yīng)腳本:
var jsonObject = xml2Json(responseBody);
參數(shù):(默認不需要設(shè)置參數(shù),為接口的response)需要轉(zhuǎn)換的xml
5.response等于預(yù)期內(nèi)容
Response div:Is equal to a string
對應(yīng)腳本:
tests["Body is correct"] = responseBody === "response_div_string";
參數(shù):預(yù)期response
6.json解析key的值進行校驗
Response div: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)時間判斷
Response time is less than 200ms
對應(yīng)腳本:
tests["Response time is less than 200ms"] = responseTime < 200;
參數(shù):響應(yīng)時間
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.微小驗證器
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)驗證json的參數(shù)折疊
柚子快報邀請碼778899分享:科普文:一文搞懂Postman
好文閱讀
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。