Postman的資料驅動,也可以叫做引數化。
1、什麼是資料驅動?
我們在執行測試用例的過程,本質上是執行的不同資料。因此我們的測試是輸入不同資料,並執行檢視介面返回結果的過程。
所以我們可以在計算機中,使用預先設定好的資料檔案,來批量執行測試用例,實現覆蓋測試點。
這個過程就叫做資料驅動。
2、測試集說明
為了更方便地管理介面請求的執行,可以通過Postman測試集(collection)來完成測試的操作,每一個測試請求可以看成一個測試用例(testcase),Collections能夠一次管理多個測試用例來執行。
通過save
,能夠將請求儲存到Collections中使用。
3、建立請求與準備資料檔案
(1)新增學院結果文件內容如下
學院新增:
1) 請求方法:POST
2) 請求地址:http://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官方文件https://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"));