『政善治』Postman工具 — 13、Postman介面測試綜合練習

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

介面測試專案例項網址:http://www.testingedu.com.cn:8081/inter/index.html

介面簡略說明:

  1. 鑑權介面:http://www.testingedu.com.cn:8081/inter/HTTP/auth
    該介面返回一個token值,之後的所有介面請求均需新增token頭域使用該token。
  2. 註冊介面:http://www.testingedu.com.cn:8081/inter/HTTP/register
  3. 登入介面:http://testingedu.com.cn:8081/inter/HTTP/login
    該介面返回一個userid,在請求使用者資訊時使用,因此儲存為變數。
  4. 獲取使用者資訊介面:http://testingedu.com.cn:8081/inter/HTTP/getUserInfo
    該介面需要使用登入後所獲取的userid,因此使用之前儲存的userid變數值。
  5. 登出介面:http://testingedu.com.cn:8081/inter/HTTP/logout

說明:

介面測試專案例項中,訪問註冊、登入、獲取使用者資訊、登出介面之前,均需要呼叫auth介面獲取token資料。

因此需要通過auth介面獲取的token資訊之後,存為變數供後續介面呼叫。

(一)專案介面文件

1、鑑權介面

鑑權介面路徑:/inter/HTTP/auth

  1. 功能說明
    獲取介面授權資訊返,回授權後token。
    本介面是訪問平臺所有介面之前必須要呼叫的授權介面,只有通過該介面初始化token之後,才能訪問平臺其他介面。
    (auth介面就是獲取token介面,作用是鑑權。)

  2. 介面格式
    Json資料格式

  3. HTTP請求方式
    POST

  4. 輸入引數說明
    1)介面接收引數

    2)頭部校驗引數

    引數名稱 是否必須 型別 描述
    token N string 授權介面的token引數,如果已經存在有效token,則需要帶上,此時不重新分配token;如果沒有有效的token,或者不帶token,都會重新分配token。
  5. 請求示例
    http://www.testingedu.com.cn:8081/inter/HTTP/auth

  6. 返回引數說明

    引數名稱 型別 描述
    status int 請求結果狀態碼:
    200:success token不存在或失效,建立token並返回
    201:success token未登入
    202:success token已授權登入,返回token。
    msg string 請求結果提示資訊。與status對應。
    token string 請求授權成功,返回token給客戶端。200和202狀態,會返回token。
  7. 正確返回示例

    {
    	"status": 200,
    	"msg": "success",
    	"token": "109f1a34bdcf4785b6c70a9917d7a49d"
    }
    
  8. 錯誤返回示例

2、註冊介面

註冊介面路徑:/inter/HTTP/register

  1. 功能說明
    註冊使用者。
    通過介面,向伺服器提交引數,然後在平臺註冊自己的使用者賬號。

  2. 介面格式
    json

  3. HTTP請求方式.
    POST

  4. 輸入引數說明
    (1)介面接收引數如下:

    引數名稱 是否必須 型別 描述
    username Y string 使用者名稱引數,範圍[3,16]
    pwd Y string 密碼引數,範圍[3,16]
    nickname Y string 暱稱引數,範圍[3,36]
    describe N string 個人描述引數,範圍[0,127]

    (2)頭部校驗引數

    引數名稱 是否必須 型別 描述
    token Y string 鑑定請求是否合法,使用者是否登入。
  5. 請求示例
    http://www.testingedu.com.cn:8081/inter/HTTP/register
    引數如下:
    username: Will
    pwd: will
    nickname: Will
    describe: Will

  6. 返回引數說明

    引數名稱 型別 描述
    status int 請求結果狀態碼:
    200:恭喜您,註冊成功
    400:引數錯誤
    401:使用者名稱已經註冊
    402:引數錯誤.
    405:非法請求
    406:登入狀態,不能註冊
    msg string 請求結果提示資訊。與status對應。
  7. 正確返回示例

    {
    	"status": 200,
    	"msg": "恭喜您,註冊成功"
    }
    
  8. 錯誤的返回示例

    {
    	"status": 405,
    	"msg": "非法請求"
    }
    

3、登入介面

登入介面路徑:/inter/HTTP/login

  1. 功能說明
    向伺服器傳送登入鑑權。
    介面向伺服器傳送使用者名稱和密碼引數,通過登入介面,去登入平臺。登入成功後,當前使用的token會備註為已登入狀態。

  2. 介面格式
    json

  3. HTTP請求方式.
    POST

  4. 輸入引數說明
    (1)介面接收引數如下:

    引數名稱 是否必須 型別 描述
    username Y string 使用者名稱引數,範圍[3,16]
    pwd Y string 密碼引數,範圍[3,16]

    (2)頭部校驗引數

    引數名稱 是否必須 型別 描述
    token Y string 登入介面的token引數,如果沒有該引數,不能請求登入介面。如果有該引數,登入成功後,該token會具備已登入的狀態。
  5. 請求示例
    http://testingedu.com.cn:8081/inter/HTTP/login
    引數如下:
    username: xiaoming
    password: 123456

  6. 返回引數說明

    引數名稱 型別 描述
    status int 請求結果狀態碼:
    200:恭喜您,登入成功
    401:使用者名稱密碼錯誤
    402:引數錯誤
    405:非法請求
    406:使用者已經在別處登入
    msg string 請求結果提示資訊。與status對應。
    id string 登入成功後,返回當前使用者的userid,其他情況不返回該欄位。
  7. 正確返回示例

    {
    	"status": 200,
    	"msg": "恭喜您,登陸成功",
        "userid": "1"
    }
    
  8. 錯誤的返回示例

    {
    	"status": 406,
    	"msg": "非法請求"
    }
    

4、使用者資訊介面

使用者資訊介面路徑:/inter/HTTP/getUserInfo

  1. 功能說明
    向伺服器獲取指定id的使用者資訊。
    該使用者的id必須與當前用token登入使用者一致,否則不能獲取。
  2. 介面格式
    json
  3. HTTP請求方式.
    POST
  4. 輸入引數說明
    (1)介面接收引數如下:
    引數名稱 是否必須 型別 描述
    username Y string 使用者id,範圍[1,10]
    (2)頭部校驗引數
    引數名稱 是否必須 型別 描述
    token Y string 用來校驗查詢資訊的使用者是否是已經登入狀態。
  5. 請求示例
    http://testingedu.com.cn:8081/inter/HTTP/getUserInfo
    引數如下:
    id: 1
  6. 返回引數說明
    引數名稱 型別 描述
    status int 請求結果狀態碼:
    200:查詢成功
    401:您還未登入
    402:引數錯誤
    404:非法查詢
    405:非法請求
    406:token已失效
    msg string 請求結果提示資訊。與status對應。
    id string 查詢成功,返回使用者id;失敗不返回。
    nickname string 查詢成功,返回使用者暱稱資訊;失敗不返回。
    describe string 查詢成功,返回使用者個人描述資訊;失敗不返回。
  7. 正確返回示例
    {
    	"status": 200,
    	"msg": "查詢成功",
    	"userid": "1",
    	"nickname": "xiaohuahua",
    	"describe": "擅長Python、Java自動化開發"
    }
    
  8. 錯誤的返回示例
    {
    	"status": 405,
    	"msg": "非法請求"
    }
    

5、登出介面

登出介面路徑:/inter/HTTP/logout

  1. 功能說明
    登出登入(退出)。
    介面向伺服器登出當前token登入的使用者。
  2. 介面格式
    json
  3. HTTP請求方式.
    POST
  4. 輸入引數說明
    (1)介面接收引數

    (2)頭部校驗引數
    引數名稱 是否必須 型別 描述
    token Y string 用來校驗使用者是否是已經登入狀態。
  5. 請求示例
    http://testingedu.com.cn:8081/inter/HTTP/logout
  6. 返回引數說明
    引數名稱 型別 描述
    status int 請求結果狀態碼:
    200:登出成功
    406:token已失效
    msg string 請求結果提示資訊。與status對應。
  7. 正確返回示例
    {
    	"status": 200,
    	"msg": "使用者已退出登入"
    }
    
  8. 錯誤的返回示例
    {
    	"status": 406,
    	"msg": "token已失效"
    }
    

(二)網站上手動驗證

在實際的工作中,我們檢視完文件之後,需要到網站上進行手動操作,呼叫一下文件中的介面,還可以藉助抓包工具,來檢查一下文件中有沒有表述上的問題。(也就是最基本的流程判斷)

通過實際操作得知如下流程:

  1. 使用者註冊的前後會呼叫auth(鑑權)介面。
  2. 使用者登陸後會呼叫查詢使用者資訊介面,在呼叫查詢使用者資訊介面前也會呼叫auth(鑑權)介面。
    也就是一個登陸操作,執行了登陸,鑑權,查詢三個介面。
  3. 登出使用者後會呼叫auth(鑑權)介面,使使用者鑑權失效。

(三)Postman測試實現

簡述整體思路:

  1. 我們需要建立5個請求,鑑權、註冊、登陸、查詢、登出。
  2. 建立一個Collection測試集管理以上請求。
  3. 建立一個環境變數,對該專案的公共變數進行管理。
  4. 先呼叫鑑權介面,把獲得的token儲存環境變數中,方便後續介面使用。
  5. 每個請求都需要編寫斷言。

1、準備工作

(1)建立一個Collection測試集

因為是新的專案,我們需要為該專案建立一個新的測試集,方便請求的管理。

例如:叫“綜合練習”。

(2)建立一個環境變數

建立一個環境變數,方便對該專案的公共變數進行管理。

一般與Collection測試集同名。

2、 建立請求

(1)建立auth鑑權請求

通過前面介面文件可以分析得出:

auth鑑權介面如果不傳遞token引數,就重新分配一個token並返回。

如果傳遞有效的token引數,此時不再重新分配token;

所以我們就建立一個不帶引數的auth鑑權請求即可。

(只填寫請求方式和請求引數即可)

如下圖:

image

然後我們編寫請求後置指令碼Tests

步驟1:編寫斷言

// 斷言鑑權操作成功
// 返回值中msg是否等於success
pm.test("鑑權介面請求成功", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.msg).to.eql("success");
});

步驟2:把返回值中的token資料儲存到環境變數中,提後後續介面使用。

// 把鑑權介面返回資料中的token資訊,儲存到環境變數中
pm.environment.set("authToken", pm.response.json().token);

編寫完成後,我們再Send驗證一次:

image

可以看到Tests中的指令碼是沒有問題,我們再來看看“綜合練習”環境變數中的內容。

如下圖:

image

看到以上資訊,說明auth鑑權請求實現完成。

(2)使用者註冊介面實現

先填寫請求方式和請求地址,並填寫請求資料,如下圖:

image

然後在請求頭中填寫token資訊。

image

最後在編寫後置指令碼Tests斷言

// 斷言使用者註冊操作是否成功
pm.test("註冊操作成功", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.msg).to.include("註冊成功");
});

傳送請求並檢視結果,如下圖:

image

以上就完成了使用者註冊介面的實現。

(3)使用者登陸介面實現

先填寫請求方式和請求地址,並填寫請求資料,如下圖:

image

然後在請求頭中填寫token資訊。

image

最後在編寫後置指令碼Tests斷言和資料處理

斷言:

// 斷言使用者登陸成功
pm.test("使用者登入成功", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.msg).to.include("登入成功");
});

資料處理:

// 把返回使用者的userid,新增到環境變數中。
// 方便後續的介面使用。
pm.environment.set("userid", pm.response.json().userid);

傳送請求並檢視結果,如下圖:

image

檢視環境變數userid已被新增。

image

以上就完成了使用者登入介面的實現。

(4)查詢使用者資訊介面實現

先填寫請求方式和請求地址,並填寫請求資料,如下圖:

image

然後在請求頭中填寫token資訊。

image

最後在編寫後置指令碼Tests斷言

// 斷言查詢使用者資訊成功
pm.test("查詢使用者資訊成功", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.msg).to.include("查詢成功");
});

傳送請求並檢視結果,如下圖:

image

以上就完成了查詢使用者資訊介面的實現。

(5)使用者登出介面實現

先填寫請求方式和請求地址,而logout(登出)介面並不需要傳遞引數,只需要傳請求頭中有效的token。

image

編寫後置指令碼Tests斷言

// 斷言使用者登出成功
pm.test("使用者退出登入成功", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.msg).to.include("退出登入");
});

傳送請求並檢視結果,如下圖:

image

這樣就完成了使用者登出介面的實現。

提示:如果再次呼叫登入介面進行使用者登入,就會出現登入失敗的現象。需要重新auth鑑權,再進行登入。

以上綜合專案中的介面我們都建立完成了。

(四)加入資料驅動

1、準備資料檔案

更具上面的5個介面,來編輯資料檔案,如下:

usernane password registerMsg loginUser loginPwd loginMsg userMsg
xiaoming3 123456 註冊成功 xiaoming3 123456 登入成功 查詢成功
xiaoming3 123456 使用者已被註冊 xiaoming3 12345666 使用者名稱密碼錯誤 您還未登陸
xiaoming3@ 123456 引數錯誤 xiaoming3@ 123456 引數錯誤 您還未登陸
xiaoming3aaaaaaaaaaaaaa 123456 引數錯誤 xiaoming3aaaaaaaaaaaaaa 123456 引數錯誤 您還未登陸

當我們用到資料驅動的時候,首先要想清楚,測試的輸入資料是哪些,還有預期的返回資訊是什麼。

提示:

  • 要把Excel檔案另存為.cvs檔案。
  • 使用Notepad++開啟資料檔案,然後將資料檔案轉為UTF-8編碼

2、修改請求中的引數

我們以註冊介面為例,其他介面同理。

修改請求引數如下:

image

修改請求後置指令碼Tests,如下:

image

3、使用測試驅動方式執行測試集

點選測試集,然後進入Collection Runner介面。

執行如下操作:

image

提示:每次上傳完資料檔案後,需要Preview一下,確保上傳的資料資訊的準確性。

如下圖:

image

最後點選Run綜合練習DDT執行測試集。

4、分析測試結果

通過分析測試結果,可以判斷介面的是否正確,也可以對測試資料重新進行補充或者修改。

image

最後得出介面測試的結果。

以上就是在工作中我們使用Postman進行介面測試的基礎流程。

相關文章