天天看點

【實踐】2.如何使用Postman做多接口測試1. 摘要2.實踐内容

【實踐】2.如何使用Postman做多接口測試1. 摘要2.實踐内容

1. 摘要

本文講解使用postman做接口測試和批量接口測試的方法。Postman的入門參考《【知識】1.Postman接口測試神器從安裝到精通》

2.實踐内容

2.1 環境變量和全局變量的設定:

a. 環境變量的設定方法如下圖。點選設定一個環境變量,名為"user_pwd", 裡面設定username 和passwd的值,然後在請求中應用這個環境變量"user_pwd"即可。

環境變量可以使用在以下地方:

  • URL
  • URL params
  • Header values
  • form-data/url-encoded values
  • Raw body content
  • Helper fields

注意:在你要使用的變量名上附上雙花括号,一個請求隻能應用一個環境變量。

【實踐】2.如何使用Postman做多接口測試1. 摘要2.實踐内容

下圖"username?imageView2/2/w/1620" 和"passwd" 的value值應用了環境變量"user_pwd",是以在body 中,隻需在key對應的value那寫上變量{{username}}, {{passwd}}。

注意:一個項目需要測試好幾個環境的情況,就可以對不同的環境設定一個環境變量,比如對“test environment”設定一個環境變量,對“stage environment”設定一個環境變量,對“production 環境”設定一個環境變量。

【實踐】2.如何使用Postman做多接口測試1. 摘要2.實踐内容

b. 全局變量的設定方法類似,如下圖,點選"Globals" 後就會出現添加環境變量類似的頁面,進行變量和值的設定。

注意:全局變量設定就應用于整個收藏夾(Collection)中的請求,不用像環境變量一樣需要選取。

【實踐】2.如何使用Postman做多接口測試1. 摘要2.實踐内容

2.2 用Postman做接口測試的執行個體

接口測試中常用的請求為GET 和POST,以下均以這兩種請求為例。

GET 和POST 的差別:

  • GET 使用URL 或Cookie 傳參,而POST将資料放在Body 中。
  • GET的URL 在長度上會有限制,而POST沒有。
  • POST比GET相對安全,因為在位址欄不可見。
  • 一般POST請求用來擷取資料,POST請求用來發送資料。

對于上面的差別,其實第一點POST也可以将資料放在URL裡,GET請求其實也沒有長度限制,POST請求看起來是隐式的,但是可以通過抓包拿到參數。

1. GET 請求:

平常我們拿一個url 通路頁面,就是所謂的get 請求。

例1.(stu_info 接口:擷取名字為xx 的資訊)

将請求方式設為GET, 同時輸入完整的url, 跟通路浏覽器一樣, 或者輸入接口url, 點選"Params" 輸入需要的key 以及value, 點選"Send", 即可在"Response" 中檢視傳回的結果。

注意: get 請求的内容不能放在body裡,并且長度有限制。由于對domain 設定了全局變量,是以,url 中用變量{{domain}} 做了替換,以下的請求中都應用了這個全局變量。

【實踐】2.如何使用Postman做多接口測試1. 摘要2.實踐内容

例2. (all_stu 接口:擷取所有使用者的資訊)

除了例1這種GET請求,還有些接口發送GET請求時除了發送key-value, 還要将Headers的資訊也一起發送過去,這樣就可以借助Postman來實作。以下圖為例,需要在Headers 裡添加"Referer"資訊,以擷取所有使用者的資訊。

【實踐】2.如何使用Postman做多接口測試1. 摘要2.實踐内容

2. POST請求:

POST 請求不能像GET一樣直接在浏覽器輸入就可以請求,需要借助工具來完成。

使用方法:選擇請求方式為post,輸入請求的url,以及輸入必要的"Authorization" , "header" 和"Body" 資料。post請求可以發送key-value, json格式,file等。

對于"Authorization"的使用,遇到比較多的是Type 為"Basic Auth", 然後設定對應的Username 和Password。

這裡的username, password的值可以通過設定環境變量的方式取得。

【實踐】2.如何使用Postman做多接口測試1. 摘要2.實踐内容

a. 用Postman 發送key-value 的請求:

以login 接口為例,在Body 中選取"form-data" 格式,輸入所需的key-value, 選取對應的環境變量。

【實踐】2.如何使用Postman做多接口測試1. 摘要2.實踐内容

b. 用Postman 發送json格式的請求:

以add user 接口為例,在Body 中選取"raw" 格式,根據接口文檔輸入json 資料, 有需要應用環境變量的選取環境變量。

【實踐】2.如何使用Postman做多接口測試1. 摘要2.實踐内容

c. 用Postman 發送檔案的請求:

以file upload 接口為例,在Body 中選取"form-data" 格式,在key 裡輸入"file",在右邊的下拉裡選取類型為"File",點選"Choose Files" 就可以上傳本地檔案了。

【實踐】2.如何使用Postman做多接口測試1. 摘要2.實踐内容

2.3 Pre-requestScript 的使用

對于環境變量和全局變量的使用,除了上面所講的方法外,也可以用Pre-requestScript 方法。

以login接口為例,在"Pre-requestScript"中設定環境變量 "username", "passwd",在Body 中選取"form-data"** 格式,輸入所需的key-value, value即為變量{{username}}, {{passwd}}。

postman. setEnvironmentVariable (“key”, “value”);

postman. setGlobalVariable (“key”, “value”);

getEnvironmentVariable ("key");//擷取key的環境變量

getGlobalVariable(“key”);//擷取key的全局變量

【實踐】2.如何使用Postman做多接口測試1. 摘要2.實踐内容

2.4 Tests 的使用

2.4.1. Tests 作為測試用例的應用

Tests 主要用來設計用例,比如要測試傳回結果是否含有某一字元串,就可以用到 Tests。以gold_add 接口為例,來編寫測試用例,分别測試傳回的結果是否含有,如下所示:

響應成功傳回PASS, 失敗傳回FAIL。

【實踐】2.如何使用Postman做多接口測試1. 摘要2.實踐内容

常用tests如下:

1.檢查response body中是否包含某個string

tests["Body matches string"] = responseBody.has("string_you_want_to_search");           

複制

注意:"Body matches string" 需唯一。

2.檢測JSON中的某個值是否等于預期的值

var data = JSON.parse(responseBody);

tests["Your test name"] = data.value === 100;           

複制

JSON.parse()方法,把json字元串轉化為對象。parse()會進行json格式的檢查是一個安全的函數。

如:檢查json中某個數組元素的個數(這裡檢測programs的長度)

var data = JSON.parse(responseBody);

tests["program's lenght"] = data.programs.length === 5;           

複制

3.檢查response body是否與某個string相等

4.轉換XML body為JSON對象

var jsonObject = xml2Json(responseBody);`
tests["Body is correct"] = responseBody === "response_body_string";           

複制

5.測試response Headers中的某個元素是否存在(如:Content-Type)

tests["Content-Type is present"] = postman.getResponseHeader("Content-Type");            

複制

//getResponseHeader()方法會傳回header的值,如果該值存在

或者:

tests["Content-Type is present"] = responseHeaders.hasOwnProperty("Content-Type");           

複制

上面的方法,不區分大小寫。下面的方法,要區分大小寫。

【實踐】2.如何使用Postman做多接口測試1. 摘要2.實踐内容

6.驗證Status code的值

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

複制

7.驗證Response time是否小于某個值

tests["Response time is less than 200ms"] = responseTime < 200;           

複制

8.name是否包含某個值

tests["Status code name has string"] = responseCode.name.has("Created");           

複制

9.POST 請求的狀态響應碼是否是某個值

tests["Successful POST request"] = responseCode.code === 201 || responseCode.code === 202;           

複制

10.很小的JSON資料驗證器

var schema = {

"items": {

"type": "boolean"

}

};

var data1 = [true, false];

var data2 = [true, 123];

console.log(tv4.error);

tests["Valid Data1"] = tv4.validate(data1, schema);

tests["Valid Data2"] = tv4.validate(data2, schema);           

複制

2.4.2. 設定環境變量,建立多個接口間的關聯

以gold_add 接口為例,由于該接口有權限驗證,需要admin使用者才可以做操作,需要添加cookie,是以需要将login 接口關聯起來使用。

在login 請求中, 在"Tests"中加入

var jsonData =JSON.parse(responseBody);//擷取body中傳回的所有參數

postman.setEnvironmentVariable("sign",jsonData.login_info.sign);//把傳回參數中的sign設定為環境變量

這樣sign 就可以作為環境變量,應用于gold_add接口。

【實踐】2.如何使用Postman做多接口測試1. 摘要2.實踐内容

在gold_add 接口中,{{username}} 由于在環境變量"user_pwd" 中已經設定,可以直接輸入變量名, {{sign}} 動态取得login接口中 Response 的 "sign" 值,{{sign}}已在上面login 請求的"Tests" 中定義。

【實踐】2.如何使用Postman做多接口測試1. 摘要2.實踐内容

2.5 使用Postman Interceptor 發送帶Cookie 的請求

使用Postman 發送Cookie 的請求時,發現無法發送成功, 顯示"Restricted Header (use Postman Interceptor)" 提示。 網上搜了一下,原來是要在Chrome安裝"Postman Interceptor"插件,它可以讓postman中發送請求的時候使用這個網站的浏覽器cookie。

【實踐】2.如何使用Postman做多接口測試1. 摘要2.實踐内容

Chrome 安裝完以後如下圖所示有出現一個下圖中的小圖示。

【實踐】2.如何使用Postman做多接口測試1. 摘要2.實踐内容

在Postman 使用的時候要将Interceptor 打開,如下圖所示,紅框中的圖示要高亮,這樣發送Cookie 的請求時就不會出現上面提到的提示資訊了。

如果請求成功的話,在"Cookies" 中可以檢視到Cookie 值。

【實踐】2.如何使用Postman做多接口測試1. 摘要2.實踐内容

本文轉載自《 postman 做接口測試之學習筆記》