『政善治』Postman工具 — 12、Postman中實現數據驅動
Postman的數據驅動,也可以叫做參數化。
1、什麼是數據驅動?
我們在執行測試用例的過程,本質上是執行的不同數據。因此我們的測試是輸入不同數據,並執行查看接口返回結果的過程。
所以我們可以在計算機中,使用預先設定好的數據文件,來批量執行測試用例,實現覆蓋測試點。
這個過程就叫做數據驅動。
2、測試集說明
為了更方便地管理接口請求的執行,可以通過Postman測試集(collection)來完成測試的操作,每一個測試請求可以看成一個測試用例(testcase),Collections能夠一次管理多個測試用例來執行。
通過save
,能夠將請求保存到Collections中使用。
3、創建請求與準備數據文件
(1)新增學院結果文檔內容如下
學院新增:
1) 請求方法:POST
2) 請求地址://127.0.0.1:8000/api/departments/
3) 請求JOSN報文:參數為json格式的請求報文
4) 調用傳入的json串如下(可新增多條,之間用,隔開):
{
"data": [
{
"dep_id": "T01",
"dep_name": "Test學院",
"master_name": "Test-Master",
"slogan": "Here is Slogan"
}
]
}
新增成功返回報文:
{
"already_exist": {
"results": [],
"count": 0
},
"create_success": {
"count": 1,
"results": [
{
"dep_id": "T02",
"dep_name": "Java學院",
"master_name": "Java-Master",
"slogan": "java"
}
]
}
}
新增失敗:id已存在所返回的報文
{
"already_exist": {
"count": 1,
"results": [
{
"dep_id": "T01",
"dep_name": "Test學院",
"master_name": "Test-Master",
"slogan": "Here is Slogan"
}
]
},
"create_success": {
"results": [],
"count": 0
}
}
新增失敗:json數據格式錯誤
{
"status_code": 400,
"detail": "請求體參數格式錯誤。"
}
(2)編寫數據文件
因為我們批量執行新增學院接口,通過上面接口文檔可以得到提交數據的格式與內容,如下:
{
"data": [
{
"dep_id": "T01",
"dep_name": "Test學院",
"master_name": "Test-Master",
"slogan": "Here is Slogan"
}
]
}
創建一個Excel文件,編寫如下內容:
dep_id | dep_name | master_name | slogan |
---|---|---|---|
100 | Tester_100 | Master_100 | 一個口號 |
101 | Tester_101 | Master_101 | 一個口號 |
102 | Tester_102 | Master_102 | 一個口號 |
103 | Tester_103 | Master_103 | 一個口號 |
104 | Tester_104 | Master_104 | 一個口號 |
105 | Tester_105 | Master_105 | 一個口號 |
106 | Tester_106 | Master_106 | 一個口號 |
107 | Tester_107 | Master_107 | 一個口號 |
108 | Tester_108 | Master_108 | 一個口號 |
109 | Tester_109 | Master_109 | 一個口號 |
110 | Tester_110 | Master_110 | 一個口號 |
說明:
- 把Excel文件要保存為
.cvs
文件。(彈出的提示一律選擇是) - 要把保存後的文件用
Notepad++
文檔工具打開,然後轉為UTF-8編碼
,並保存。否則中文存入數據庫會亂碼。
因為Postman對數據文件,只支持UTF-8
的編碼格式。
- 如果是以key-value表單的形式提交,也是一樣的一個key對應Excel中的一列數據。(請求中需要一個變量,就再Excel中定義一列數據)
- 在Postman讀取文件的時候,會把第一行自動忽略掉。
說明:
- Postman只支持
.csv
和.json
格式的數據文件。- 數據多推薦使用
.csv
格式的數據文件進行數據驅動。- 數據少推薦使用
.json
格式的數據文件進行數據驅動,不容易出錯。
(3)在Postman中創建請求
根據文檔,創建新增學院請求如下圖:
注意:
{{ }}
中的字段,一定要和數據文件中的字段對應上。
然後編寫接口斷言:
提示:
請求創建完成後要進行保存。
如果請求有修改,保存後,再重新Collection Runner界面。
4、實現Postman中的數據驅動
當需要進行數據驅動運行多次Postman腳本時,可以通過.csv
或者.json
格式的數據文件,對接口測試數據進行管理,以方便用例的執行。
步驟1:進入Collection Runner
界面
進入Collection測試集的Collection Runner
界面。
點擊Collection測試集名稱後邊的箭頭,點擊Run
。
步驟2:選擇需要執行的接口
在Collection Runner
界面中選擇需要執行的接口。
我們只需要執行批量新增學院請求,如下圖:
按鈕說明:
Deselect All
:取消全選(默認全選)。Select All
:全選。Reset
:重置(恢復默認全選)。
步驟3:配置Collection Runner
配置Collection Runner執行選擇。
- 選擇Collection測試集。
Environment
:選擇環境變量。Iterations
:接口迭代次數,這個不用填寫,選擇數據文件後會自動識別(會自動忽略第一行標題)。
如果只執行測試集,不進行數據驅動,自己按需求填寫。Delay
:每次執行的間隔。Data
:選擇.csv
數據文件。(可以添加測試數據,在tests中用data參數訪問)// data 表示數據文件的對象 // data.cityname表示獲取數據文件中的cityname屬性值 pm.test("驗證返回中city的值是"+data.cityname, function () { var jsonData = pm.response.json(); // 獲取返回值所有數據 pm.expect(jsonData.city).to.eql(data.cityname); // 斷言返回值中具體字段的值 }); // 這種取值方式要重點記住
Save responses
:保存響應。
允許記錄請求的響應頭和正文,方便您查看。
這可能會收集較多的數據,從而影響測試集運行的性能。Keep variable values
:是否保留測試集執行過程中對環境變量的修改。(夠不勾選都可以)Run collection without using stored cookies
:在不使用存儲的cookie的情況下運行測試集。Save cookies after collection run
:測試集運行後保存cookie。
更新此會話中存儲的cookie,並將其保存到您的cookie管理器中。
(以上四項默認即可)Run ***
:運行已選擇collection測試集中的接口。
配置完如下圖:
重點提示:
Preview
能夠查看數據文件中內容預覽,可以查看文件讀取內容是否有誤。
步驟4:執行測試
執行並查看結果。
說明:
(1)頂部欄:
Collection Runner
:返回Collection Runner界面。Run Results
:當前Run運行的結果界面。My Workspace
:切換工作空間。Run In Command Line
:在命令行中運行。(好像是需要安裝一個Newman的命令行工具來執行命令,這個暫時不重要)Docs
:進入Postman官方文檔//learning.postman.com/docs/running-collections/intro-to-collection-runs/
(2)測試結果部分:
測試集Run完成後:
- 成功多少個斷言。
- 失敗多少歌斷言。
- 測試集的名稱。
- 測試集選擇的環境變量。
執行完成PASSED和FAILED的總和,等於每個接口斷言個數×執行次數。
(3)工具欄:
Run Summary
:查看運行摘要(概況)。
如下圖:
Export Results
:導出測試集執行結果,.json
文件的形式。Retry
:重新執行一次測試集。New
:新建一個Collection Runner界面,其實也就是返回了Collection Runner界面。
(4)請求列表部分:
說明:
- 我們可以看到每一個請求名稱、URL、執行的響應碼、使用時間、所用數據,還有該請求所執行的斷言。
- 左側欄可以點擊切換,只查看成功的斷言、只查看失敗的斷言和全部顯示。
- 右側欄我們可以直接選擇查看第幾次發送的請求。
- 點擊請求的名稱,我們也可以看到該請求的詳細數據,如下圖:
(5)底部欄:
Console
:控制台,可以查看每個請求的運行日誌和數據信息。
可以查看請求頭、請求體、響應頭、相應體等數據。
如果請求報錯,也可以查看到錯誤信息。
以上就是在Postman中數據驅動的使用過程。(json格式的數據文件使用同理)
實際上面是講了兩部分內容,
- 一部分是Collection測試集的執行,也就是
Collection Runner
。- 還有一個就是Postman中數據驅動的使用。
5、補充: json格式數據文件說明
[
{
"userName":"張三",
"passWord":"123456",
"sex":"男",
"age":66
},
{
"userName":"李四",
"passWord":"123456",
"sex":"男",
"age":88
},
{
"userName":"王五",
"passWord":"123456",
"sex":"女",
"age":99
}
]
提示:外面必須是[]
,每一組數據使用 {}
進行封裝,中間使用逗號進行分隔。
6、補充:數據文件在預置腳本中的使用
(1).csv
文件
Pre-request Script
編寫如下代碼:
// 在Pre-request Script和tests中用data代表訪問參數
// 獲取參數化文件中的dep_name字段的值
var dep_name = data.dep_name
// 將獲取到的 dep_name 設置為環境變量
pm.environment.set("dep_name", dep_name);
// 調試
console.log(pm.environment.get("dep_name"));
(2).json
文件
Pre-request Script
編寫如下代碼:
// 在Pre-request Script和tests中用data代表訪問參數
// 獲取參數化文件中的userName字段的值
var userName = data.userName
// 將獲取到的 userName 設置為環境變量
pm.environment.set("userName", userName);
// 調試
console.log(pm.environment.get("userName"));