『政善治』Postman工具 — 12、Postman中實現資料驅動

繁華似錦Fighting發表於2021-05-24

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的編碼格式。
    image
  • 如果是以key-value表單的形式提交,也是一樣的一個key對應Excel中的一列資料。(請求中需要一個變數,就再Excel中定義一列資料)
  • 在Postman讀取檔案的時候,會把第一行自動忽略掉。

說明:

  • Postman只支援.csv.json格式的資料檔案。
  • 資料多推薦使用 .csv格式的資料檔案進行資料驅動。
  • 資料少推薦使用.json格式的資料檔案進行資料驅動,不容易出錯。

(3)在Postman中建立請求

根據文件,建立新增學院請求如下圖:

image

注意:

{{ }}中的欄位,一定要和資料檔案中的欄位對應上。

image

然後編寫介面斷言:

image

提示:

請求建立完成後要進行儲存。

如果請求有修改,儲存後,再重新Collection Runner介面。

4、實現Postman中的資料驅動

當需要進行資料驅動執行多次Postman指令碼時,可以通過.csv或者.json格式的資料檔案,對介面測試資料進行管理,以方便用例的執行。

步驟1:進入Collection Runner介面

進入Collection測試集的Collection Runner介面。

點選Collection測試集名稱後邊的箭頭,點選Run

image

步驟2:選擇需要執行的介面

Collection Runner介面中選擇需要執行的介面。

我們只需要執行批量新增學院請求,如下圖:

image

按鈕說明:

  • Deselect All:取消全選(預設全選)。
  • Select All:全選。
  • Reset:重置(恢復預設全選)。

步驟3:配置Collection Runner

配置Collection Runner執行選擇。

  1. 選擇Collection測試集。
  2. Environment:選擇環境變數。
  3. Iterations:介面迭代次數,這個不用填寫,選擇資料檔案後會自動識別(會自動忽略第一行標題)。
    如果只執行測試集,不進行資料驅動,自己按需求填寫。
  4. Delay:每次執行的間隔。
  5. 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); // 斷言返回值中具體欄位的值
    });
    
    // 這種取值方式要重點記住
    
  6. Save responses:儲存響應。
    允許記錄請求的響應頭和正文,方便您檢視。
    這可能會收集較多的資料,從而影響測試集執行的效能。
  7. Keep variable values:是否保留測試集執行過程中對環境變數的修改。(夠不勾選都可以)
  8. Run collection without using stored cookies:在不使用儲存的cookie的情況下執行測試集。
  9. Save cookies after collection run:測試集執行後儲存cookie。
    更新此會話中儲存的cookie,並將其儲存到您的cookie管理器中。
    (以上四項預設即可)
  10. Run ***:執行已選擇collection測試集中的介面。

配置完如下圖:

image

重點提示:Preview能夠檢視資料檔案中內容預覽,可以檢視檔案讀取內容是否有誤。

步驟4:執行測試

執行並檢視結果。

image

說明:

(1)頂部欄:

image

(2)測試結果部分:

image

測試集Run完成後:

  • 成功多少個斷言。
  • 失敗多少歌斷言。
  • 測試集的名稱。
  • 測試集選擇的環境變數。

執行完成PASSED和FAILED的總和,等於每個介面斷言個數×執行次數。

(3)工具欄:

image

  • Run Summary:檢視執行摘要(概況)。
    如下圖:
    image
  • Export Results:匯出測試集執行結果,.json檔案的形式。
  • Retry:重新執行一次測試集。
  • New:新建一個Collection Runner介面,其實也就是返回了Collection Runner介面。

(4)請求列表部分:

image

說明:

  • 我們可以看到每一個請求名稱、URL、執行的響應碼、使用時間、所用資料,還有該請求所執行的斷言。
  • 左側欄可以點選切換,只檢視成功的斷言、只檢視失敗的斷言和全部顯示。
  • 右側欄我們可以直接選擇檢視第幾次傳送的請求。
  • 點選請求的名稱,我們也可以看到該請求的詳細資料,如下圖:

image

(5)底部欄:

Console:控制檯,可以檢視每個請求的執行日誌和資料資訊。

可以檢視請求頭、請求體、響應頭、相應體等資料。

如果請求報錯,也可以檢視到錯誤資訊。

image

以上就是在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"));

參考:https://zhuanlan.zhihu.com/p/150292738

相關文章