Postman使用手冊之實戰(zhàn)

主要介紹使用postman進行web api接口主流程場景的回歸測試及測試過程中數(shù)據(jù)構(gòu)造;主要用到的是get/post請求;以及使用過程中常用的參數(shù)化,簡單的tests檢查點以及如何取登錄后的cookies

一、環(huán)境準備

1)在chrome中安裝插件postman interceptor,這個截圖是我已經(jīng)安裝好的

2)安裝postman app


二、使用postman攔截post/get請求

1)打開Request Capture開關(guān),并添加filter過濾你希望攔截的請求


2)啟動postman app

3)postman中的interceptor開關(guān)打開

4)在chrome瀏覽器操作,發(fā)現(xiàn)請求被攔截在postman的history下

5)在collection下新建一個collection

點擊切換到history下,點擊請求后面的+,直接把請求放到剛剛新建的collection中,方便后期調(diào)試


6)導(dǎo)出保存的請求文件

三、調(diào)試及參數(shù)化post/get請求

以上通過interceptor插件安裝的postman app是插件版本的,沒有控制臺窗口,不方便調(diào)試,此時可以在postman官網(wǎng)重新下載個非插件版的app,直接啟動這個app

1)導(dǎo)入之前保存的腳本

2)參數(shù)化可變的值,從environment文件讀取變量

PS:postman讀取環(huán)境變量常見的有4種,本篇介紹從environment文件中讀取

點擊manage environments->點擊add

然后編輯剛新建的環(huán)境變量文件,輸入需要引用的變量名和變量值,點擊update

在請求中引用環(huán)境變量,默認方式{{變量名}}

3)在Pre-request Script 和Tests編寫腳本

Pre-request Script 是在請求發(fā)送前執(zhí)行,Tests主要用于添加校驗點以及獲取response body中值作為下個請求中的參數(shù);

PS:postman常用的方法,可參看官方文檔

https://www.getpostman.com/docs/v6/postman/scripts/test_examples

4)調(diào)試打印變量,使用cosole.log(需要打印的內(nèi)容)

?首先在Tests中使用cosole.log()方法,比如

打開console

點擊send發(fā)送請求,發(fā)現(xiàn)控制臺會打印出值

四、runner 運行collection

點擊runner-->選擇需要執(zhí)行的collection-->選擇需要用到的環(huán)境變量文件-->設(shè)置運行參數(shù)


PS:常見4類變量作用域:

Global: 全局變量,postman中所有請求都可以訪問或者修改;

Environment: 構(gòu)造請求時可以選擇使用某個Environment,這樣就可以訪問或者修改該Environment下的所有變量;

Local: 腳本中定義的變量,只對腳本的當前作用域有用;

Data: 只有在使用?Collection Runner?的時候,可以通過導(dǎo)入 Data Files 來構(gòu)造當前測試集中用到的數(shù)據(jù)。

作用域:Global<Collection<environment<local

1)關(guān)于變量引用遇到的問題

如果environment設(shè)置的變量,collection運行結(jié)束后environment中值無法變更

參考:https://www.cnblogs.com/majunBK/articles/9447021.html

原因:runner運行設(shè)置前沒有勾選keep variable value,如果不勾選keep variable value,則運行Collection Runner中修改的任何變量都不會影響Postman主應(yīng)用中對應(yīng)的環(huán)境變量值,在Collection Runner運行完成后恢復(fù)environment原始的值

如果運行時勾選keep variable value,則Collection Runner運行完成后Postman主應(yīng)用中對應(yīng)的環(huán)境變量值變更,主要使用場景:比如第一個collection執(zhí)行結(jié)束后環(huán)境變量值需要變更作為第二個collection執(zhí)行環(huán)境變量值的輸入


2、遇到的問題

1)runner時報錯Data unavailable(Only data about the top 10 historical runs is stored)

詳細原因:http://www.itdecent.cn/p/b6e934e4601e

可能解決的辦法:

1)調(diào)整請求執(zhí)行順序

2)在容易出現(xiàn)這個錯請求的上一個請求tests中加等待時間

setTimeout(()=>console.log('等待'), 3000);

3、常用的方法總結(jié)

參考文檔https://www.getpostman.com/docs/v6/postman/scripts/test_examples

1)取cookies里面的token

? var token = postman.getResponseCookie("a9a68f4fefd3b693f10be4a89799dc48").value

? console.log('token123',token);

? pm.environment.set("token", token);

2)環(huán)境變量

//清楚上一次執(zhí)行保存的值

pm.globals.unset(onlineTradeNo);

//將訂單號傳入環(huán)境變量

pm.globals.set("onlineTradeNo",onlineTradeNo.data[0].tid);

//獲取環(huán)境變量

pm.globals.get("AdminIdOne");

3)返回狀態(tài)校驗200

//校驗response返回200

tests["Status code is 200"] = responseCode.code === 200;

4)獲取response里面的tid

//獲取response的body中生成的訂單號,如果不是數(shù)組的話可直接取

var onlineTradeNo = JSON.parse(responseBody);

console.log("onlineTradeNo",onlineTradeNo.data[0].tid);---數(shù)組寫法

console.log("onlineTradeNo", onlineTradeNo.data.tid);---非數(shù)組

5)從環(huán)境變量獲取數(shù)組中1個值

//取環(huán)境變量中待審核的訂單狀態(tài)

var array=pm.environment.get("data_entry");

var value=JSON.parse(array)[0];

// console.log("value is"+" "+value);

//校驗狀態(tài)是否是期望值是否=audit

pm.test("applyStatus is audit", function () {

? ? var jsonData = pm.response.json();

? ? // console.log(jsonData.data.applyStatus);

? ? pm.expect(jsonData.data.applyStatus).to.eql(value);

});

6)Tests中設(shè)置等待時間

setTimeout(()=>console.log('等待'), 3000);

setTimeout(function(){}, 3000)

7)在Tests中通過設(shè)置腳本控制API的執(zhí)行順序

參考文檔:http://www.itdecent.cn/p/a3b4794ab283

當前請求Tests中添加:postman.setNextRequest('下一個需要執(zhí)行請求名稱')

最后1個請求Tests中添加:postman.setNextRequest("null")

8)for循環(huán)的使用,比如根據(jù)一個出庫單可以查詢出2條庫存流水,需要把庫存流水值相加

//獲取出庫單(可能是多條)和出庫數(shù)量(相加)

var DN=pm.environment.get("deliveryOrder");

var number=parseFloat(pm.environment.get("delivery_num"));

var newstocks=0;

for(var i in jsonData.data.data){

? ? if(jsonData.data.data[i].relatedNo == DN){

? ? newstocks += jsonData.data.data[i].newChangeStocks;

? ?}

}

? pm.expect(newstocks).to.eql(number)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,695評論 19 139
  • 一、Postman的其他鏈接教程 http://www.itdecent.cn/p/13c8017bb5c8 尤其...
    小小背影閱讀 4,245評論 3 8
  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom閱讀 3,224評論 0 3
  • 【Tests】例子 在發(fā)送請求并從服務(wù)器收到響應(yīng)后運行測試腳本。 讓我們看一下Postman-Tests模塊的一些...
    小娟_bb93閱讀 791評論 0 0
  • 女生總是想用成熟的妝容來告訴別人自己長大了,而男生總是想通過更多的物質(zhì)的東西來告訴別人自己成熟了。你覺得我說得對嗎?
    太陽落山了你我在哪閱讀 371評論 0 1

友情鏈接更多精彩內(nèi)容