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


接口測試項目實例網址: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進行接口測試的基礎流程。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM