1. PostMan進階——測試腳本的編寫
預處理腳本(Pre-request script)
斷言腳本(Tests script)
請求之前添加的腳本,我們稱為預處理(Pre-request Script) ,預處理腳本與Jmeter的前置處理器類似,主要作用就是一些初始化的功能
請求本身的問題,但是「請求前後的動作」是怎麼處理的?
比如在發送一個請求前,需要獲取當前系統時間戳,這就需要用到Pre-request Script的知識。請求返回響應結果後,如何自動判斷響應是否正確?這就需要用到Tests的知識。
postman支持javascript,允許測試人員給請求和集合添加動態行為,通過使用javascript腳本,可以構建包含動態參數的請求,在請求之間傳遞數據。可以在下面兩個事件流中添加javascript腳本。
1、在請求發送前,添加作為「Pre-request Script」選項下的預處理腳本
2、在收到響應後,添加測試腳本進行斷言、流程式控制制
可以將預處理和測試腳本添加到一個集合、一個文件、一個請求中。
1、為集合添加腳本
2、為文件添加腳本
3、為請求添加腳本
在Postman中,單個請求的腳本執行順序如圖
1、與請求相關聯的預請求腳本將在請求發送之前執行
2、與請求關聯的測試腳本將在接收響應之後執行。
對於集合中的每個請求按順序執行
1、與集合相關的預請求腳本將在集合中的每個請求之前運行
2、與文件夾相關聯的預請求腳本將在文件夾中的每個請求之前運行。
3、與集合相關的測試腳本將在集合中的每個請求之後運行。
4、與文件夾關聯的測試腳本將在該文件夾中的請求之後運行。
對於集合中的每個請求,腳本總是按照下面的層次結構運行:集合級腳本、文件夾級腳本、請求級腳本。此執行順序適用於預請求和測試腳本。為了驗證其正確性,可以創建這樣一個集合,其中包含一個文件夾和兩個請求。
2 測試腳本
預處理腳本,指在請求發送之前執行的腳本。如果想在請求發送時包含當前時間戳或者一個隨機的字元,前端加密等,在這個場景下使用前置腳本。例如,要在請求頭中包含一個時間戳,可以設置一個環境變數,其值從函數返回。
預處理腳本將被執行,並且timestampHeader的值將被賦值給變數{{timestampHeader}}。body中通過使用{{timestampHeader}}來傳遞變數。
Postman准備了常用腳本實例,這些腳本能夠滿足大多數介面測試的需求,接下來,一起認識一下它們,Postman在右側區域列出了常用腳本。
演試案例:
准備介面
打開「Postman Console」
了解console.log()
介面描述:
Postman Console窗口輸出內容的順序體現了腳本執行的順序,Pre-request Script請求中的腳本先執行,然後才發送介面的請求
設置變數、獲取變數值腳本
1、設置一個全局變數
pm.globals.set("variable_key", "variable_value");
2、設置一個環境變數
pm.environment.set("variable_key", "variable_value")
3、獲取一個全局變數
pm.globals.get("variable_key")
4、獲取一個環境變數
pm.environment.get("variable_key")
演試案例:
演試內容:Postman在右側區域列出了常用腳本的演試
通過console.log輸出globals、environment當前的環境變數,Postman Console窗口的輸出情況。
清除變數的腳本
1、清除一個全局變數
pm.globals.unset("variable_key")
2、清除一個環境變數
pm.environment.unset("variable_key")
發送請求的腳本
1、發送一個請求
pm.sendRequest()
響應之後添加的腳本,稱為測試腳本(Tests Script),即斷言腳本,測試腳本主要用於介面斷言,類似LoadRunner工具中的檢查點、Jmeter中的斷言功能。需要使用javascript語言為每個請求編寫測試腳本。
測試腳本相關方法:
1、檢查響應體中是否包含一個欄位
pm.expect(pm.response.text()).to.include("指定的內容")
2、將xml格式額響應體轉換程Json對象
varJson=xml2JSON(responseBody)
3、檢查響應體等於一個字元串
pm.response.to.have.body("指定的內容")
4、檢測響應體的JSON值
varJSON=pm.response.JSON();//將結果轉換程json格式
pm.expect(JSON.value).to.eql(「目標數」);
5、檢測響應體中包含某個header
pm.response.to.have.header("Content-Type")
6、檢查響應時間,要求小於100ms
pm.expect(pm.response.responseTime).to.be.below(100);
7、要求該介面響應碼為200
pm.varibles.get("指定狀態碼")
8、要求響應狀態中包含某個字元
pm.response.to.have.status("OK")
9、要求status code符合某個條件
pm.expect(pm.response.code).to.be.oneOf([200,201,202])
關於postman測試腳本中介面返回結果比較復雜的斷言,且需要對多個值進行斷言的情況,通過一個示例說明。
假如該介面mock出參如下:
我們需要斷言其中的多個欄位,可如下斷言:
2. 如何做介面測試
1、可以使用postman軟體進行介面測試,這里以較復雜的上傳圖片的介面為例進行測試,首先打開postman軟體選擇Post方式,輸入後台介面調用地址。
3. 介面post請求循環體的腳本怎麼寫
1.可以指定後續請求的名稱或ID,收集運行器將處理其餘的工作。
2.它可以在預請求或測試腳本中使用。如果有多個賦值,則優先使用最後一個設定值。3.如果請求中缺post .setnextrequest(),則集合運行器默認為線性執行,並移動到下一個請求。
4.一定要注意:在連續循環一個請求時,應該在某些邏輯中封裝setNextRequest,以確保請求不會棗逗伏無限期地運行,否則需要強制關閉收集運行器。
5.在指握action空白處,點擊insert—凳攜>step,輸入web_custom_request,雙擊選擇該函數,填入如下幾個參數值,然後就完成了。
6.這些東西其實很難,所以我們要做對它的話,就得要去研究它,然後來一步一步的嘗試做對,我們在研究它的過程中,一定是困難的,但是我們要耐得住困難,加油。
4. 介面測試流程是什麼
介面測試是測試系統組件間介面的一種測試。介面測試主要用於檢測外部系統與系統之間以及內部各個子系統之間的交互點。測試的重點是要檢查數據的交換,傳遞和控制管理過程,以及系統間的相互邏輯依賴關系等。