<small id="nvnkc"><optgroup id="nvnkc"><sub id="nvnkc"></sub></optgroup></small>

<th id="nvnkc"><div id="nvnkc"></div></th>
  • <noscript id="nvnkc"><nobr id="nvnkc"><address id="nvnkc"></address></nobr></noscript>

  • <code id="nvnkc"><var id="nvnkc"></var></code><tbody id="nvnkc"><listing id="nvnkc"><nav id="nvnkc"></nav></listing></tbody>

    PostMan接口測試教程之理論加實踐

    發布時間: 編輯:CINDY 0人評論 335次瀏覽 實用方法教程
    摘要 : 本文詳細介紹了PostMan接口測試教程

    背景介紹

    1. 前言

    在前后端分離開發時,后端工作人員完成系統接口開發后,需要與前端人員對接,測試調試接口,驗證接口的正確性可用性。而這要求前端開發進度和后端進度保持基本一致,任何一方的進度跟不上,都無法及時完成功能模塊的測試。

    做為后端開發人員,要求獨立開發完成某個接口后,開發人員自己需要先測試通過后再提交給測試人員進行測試,否則會出現到測試人員哪里業務流程根本就走不通,或者BUG會過多的情況等。市場上有很多優秀的,完善的接口測試工具,比如SoapUI,Postman,JMeter、yapi等,能夠高效的幫助后端開發人員獨立進行接口測試。這里使用Postman接口測試工具,分別介紹如何對GET請求和POST請求進行接口測試。

    2. Postman簡介

    Postman是一個接口測試工具,在做接口測試的時候,Postman相當于一個客戶端,它可以模擬用戶發起的各類HTTP請求,將請求數據發送至服務端,獲取對應的響應結果,從而驗證響應中的結果數據是否和預期值相匹配;并確保開發人員能夠及時處理接口中的bug,進而保證產品上線之后的穩定性和安全性。它主要是用來模擬各種HTTP請求的(如:get/post/delete/put..等等),Postman與瀏覽器的區別在于有的瀏覽器不能輸出Json格式,而Postman更直觀接口返回的結果。

    3.Postman界面圖

    PostMan接口測試(很全面的接口測試教程)

    各個功能區的使用如下:

    l 快捷區: 快捷區提供常用的操作入口,包括運行收藏夾的一組測試數據,導入別人共享的收藏夾測試數據(Import from file, Import from folder, Import from link等),或新建請求、收藏夾、環境變量等。

    l 側邊欄: 包括搜索欄, Request 請求的歷史記錄和收藏夾管理。

    l 功能區: Request 請求設置,查看 Response 響應結果和測試結果,可以將請求保存到收藏夾。

    l 設置區:設置和管理環境變量和全局變量。

    二:工具應用

    1. 新建接口

    1.1 創建Collection集合

    在剛開始一個項目時,為了后續便于組織和管理,把同屬該項目的多個 API,放在一組里。所以要先去新建一個 Collection: New -> Collection

    PostMan接口測試(很全面的接口測試教程)

    1.2 創建請求

    PostMan接口測試(很全面的接口測試教程)

    1.3 設置HTTP請求

    設置 HTTP 的 Method 方法和輸入 api 的地址以及請求參數或請求體

    PostMan接口測試(很全面的接口測試教程)

    以下為獲取微信公眾號為案例所設計的HTTP請求

    PostMan接口測試(很全面的接口測試教程)

    GET是請求方法,請求方法是HTTP請求的必要要素,常見的請求方法有GET和POST兩種。API地址一般為URL地址。如果是請求URL中的入參,會在Params列出參數名稱及參數取值,方便我們輕松的修改各入參的值。如有需要,還應該設置HTTP請求Headers部分。

    如果是POST請求,需要將請求方法設置為POST,一般說來POST請求是有請求體的,固需要在Body部分中編寫正確的請求body內容和Content-Type的值(在Headers中進行設置)

    1.3.1 GET和POST的區別

    l GET 使用URL 或Cookie 傳參,而POST將數據放在Body 中。

    l GET的URL 在長度上會有限制,而POST沒有。

    l POST比GET相對安全,因為在地址欄不可見。

    l 一般POST請求用來獲取數據,POST請求用來發送數據。

    對于上面的區別,其實第一點POST也可以將數據放在URL里,GET請求其實也沒有長度限制,POST請求看起來是隱式的,但是可以通過抓包拿到參數。

    1.4 發送HTTP請求

    點擊上圖中藍色Send圖標即可發送請求,驗證請求結果是否正確。下圖是對應的響應結果,包含Body和Headers兩個部分,Body即響應體正文,Headers即為響應頭信息,響應頭不包含響應狀態碼和狀態信息部分。

    PostMan接口測試(很全面的接口測試教程)

    響應體包含三種查看模式,分別為:Pretty默認模式、Raw原始數據格式,Preview預覽模式(此模式針對HTML頁面效果很好)。

    1.5 關聯技術

    關鍵技術是將前一個請求的響應結果保存到變量中,再將此變量在后續請求中進行引用。

    1.5.1 保存前一個請求的響應數據

    因為Tests模塊是后置模式,可對響應進行處理。我們可以通過賦值方式把響應結果保存到變量中,參考代碼如下:

    PostMan接口測試(很全面的接口測試教程)

    1.5.2 對后一個請求進行參數化

    因前面將access_token的值保存到了環境變量中,所以在該請求中,只需要進行參數引用即可。

    PostMan接口測試(很全面的接口測試教程)

    1.5.3 關聯的高級操作

    利用Send a request實現前置步驟,例如:客服發消息模塊,前置步驟是獲取access_token,我們可在Pre-request Script前置步驟中發送請求,將該請求的結果保存到環境變量accesstoken中,然后在主請求中引用該環境變量即可。

    PostMan接口測試(很全面的接口測試教程)

    1.5.4 附:前置步驟中發送POST請求

    POST請求相比GET請求要復雜一點,因為其需要加入請求Header和請求Body,以下是Pre-request Script在發送POST請求的案例:

    • 構造一個登錄請求
    const loginRequest = {	url: 'http://115.28.108.130:5000/api/user/login/',	method: "POST",    body: {        mode: 'urlencoded',  // 模式為表單url編碼模式        urlencoded: 'name=張三&password=123456'    }};
    • 發送請求
    pm.sendRequest(loginRequest, function (err, res) {	console.log(err ? err : res.text());});

    發送JSON格式請求與發送POST請求類似,以下采用了raw模式發送請求體。

    • 構造一個注冊請求
    const regRequest = {    url: 'http://115.28.108.130:5000/api/user/reg/',    method: 'POST',    header: 'Content-Type: application/json',  //注意要在Header中聲明內容使用的類型    body: {        mode: 'raw',  // 使用raw(原始)格式        raw: JSON.stringify({ name: '小小', password: '123456' }) //要將JSON對象轉為文本發送    }};
    • 發送請求
    pm.sendRequest(regRequest, function (err, res) {	console.log(err ? err : res.json());  // 響應為JSON格式可以使用res.json()獲取到JSON對象});

    因為HTTP請求都支持raw格式,我們只要能夠獲取請求的raw格式,便可采用raw模式發送任意類型的請求體了。

    2.接口數據用例

    2.1 數據用例設計

    Postman支持的是csv文件作為數據用例,數據用例包含三大部分,分別為:用例標題(title),入參(grant_type,appid,secret),期望結果(expected)

    title grant_type appid secret expected
    正確的用例 client_credential wx508a5cacbbfc1141 fa4fc7f17ddead12d7cdcd994e7d2543 7200
    grant_type錯誤 client_credentia wx508a5cacbbfc1141 fa4fc7f17ddead12d7cdcd994e7d2543 40002
    appid錯誤 client_credential wx508a5cacbbfc114 fa4fc7f17ddead12d7cdcd994e7d2543 40013
    secret錯誤h client_credential wx508a5cacbbfc1141 fa4fc7f17ddead12d7cdcd994e7d254 40001

    我們可以根據黑盒用例設計方法如等價類、邊界值、判定表、正交實驗法對入參進行用例設計,得到各種不同的測試場景(取值組合)

    2.2 數據用例參數化

    前面我們在csv文件中編寫好了數據用例,且保證第一行為參數的名稱。將請求中入參值依次進行替換,在Postman中參數的編寫規格為兩個花括號,如:{{appid}}

    PostMan接口測試(很全面的接口測試教程)

    2.3 設置迭代器

    要讀取所有的測試用例,需要設置迭代器讓其循環讀取那些測試數據。Postman中設置迭代器需在Run中完成,請看【4.Runner執行測試】

    3.結果檢查(斷言)

    Postman的斷言功能在Test模塊中,比如要測試返回結果是否含有某一字符串,就需要在Test中編寫相應的代碼,Test中的代碼使用的是JavaScript語法。

    PostMan接口測試(很全面的接口測試教程)

    3.1 Postman自帶Tests函數

    Postman提供了參考代碼供我們選擇即可,主要斷言代碼有如下幾種:

    # 斷言狀態碼是否為200,在斷言中此種斷言價值不高

    pm.test("Status code is 200", function () {	pm.response.to.have.status(200);});

    # 斷言響應文本中是否包含某個數據串,常用

    pm.test("Body matches string", function () {	pm.expect(pm.response.text()).to.include("string_you_want_to_search");});

    # 使用JsonPath斷言

    pm.test("Your test name", function () {    var jsonData = pm.response.json();    pm.expect(jsonData.value).to.eql(100);});

    # 檢查響應正文中是否包含某個子串

    pm.test("Body is correct", function () {	pm.response.to.have.body("response_body_string");});

    # 響應信息包含列表中其中某一個

    pm.test("Successful POST request", function () {	pm.expect(pm.response.code).to.be.oneOf([201,202]);});

    # 將xml響應轉為json

    var jsonObject = xml2Json(responseBody);

    3.2 手工tests函數

    也可以使用斷言并賦值的形式,相對而言,以下方式會更為簡潔實用。

    PostMan接口測試(很全面的接口測試教程)

    常見的斷言代碼有:

    # 檢查response的body中是否包含字符串

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

    # 檢查JSON節點的值和節點元素的個數為5

    var data = JSON.parse(responseBody).city; //把JSON字符串轉化為對象tests["Your test name"] = data.value===100;tests["program's lenght"] = data.programs.length===5;

    # 驗證Response time是否小于某個值

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

    3.3 tests高級操作

    我們可以引用數據用例csv文檔中的預期結果進行斷言。

    var jsonData = JSON.parse(responseBody) ;# data.expected 為csv數據文件中的預期結tests["測試結果通過"] = jsonData.expires_in===data.expected ;

    在tests還可以使用判斷語句進行斷言,如下:

    PostMan接口測試(很全面的接口測試教程)

    在Postman中斷言的操作非常靈活,需要同學們多進行練習。

    pm.test("預期結果包含:長沙,實際結果為:"+result, function () {   if(JSON.parse(responseBody).city==="長沙"){       pm.expect(pm.response.text()).to.include("千里");       pm.expect(pm.response.text()).to.include("長沙");   }else if(JSON.parse(responseBody).city==="Changsha"){       pm.expect(pm.response.text()).to.include("千里");       pm.expect(pm.response.text()).to.include("Changsha");   }else if(JSON.parse(responseBody).city==="長沙"){       pm.expect(pm.response.text()).to.include("千里");       pm.expect(pm.response.text()).to.include("長沙");   }});

    4.Runner執行測試

    4.1 設置迭代器

    PostMan接口測試(很全面的接口測試教程)

    4.2 查看運行結果

    PostMan接口測試(很全面的接口測試教程)

    三:其他事項

    1.保存接口配置

    待整個接口都調試完畢后,記得點擊 Save 去保存接口信息:

    PostMan接口測試(很全面的接口測試教程)

    去保存當前 API 接口,然后需要填寫相關的接口信息:

    l Request Name: 請求的名字

    我一般習慣用保存為 接口的最后的字段名,比如

    l Request Description: 接口的描述

    最好寫上該接口的要實現的基本功能和相關注意事項

    支持 Markdown 語法

    Select a collection or folder to save: 選擇要保存到哪個分組(或文件夾)

    往往保存到某個 API 接口到所屬的該項目名的分組

    2. Postman的參數

    2.1 自動解析多個參數Param

    比如,對于一個 GET 的請求的 url 是:https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx508a5cacbbfc1141&secret=fa4fc7f17ddead12d7cdcd994e7d2543

    對應著其實是?key=value形式中包含多個 Http 的 GET 的 query string=query parameters

    Postman 可以自動幫我們解析出對應參數:

    PostMan接口測試(很全面的接口測試教程)

    2.2 臨時禁用參數

    在不刪除某參數的情況下,如果想要暫時不傳參數,可以方便的通過不勾選的方式去實現

    PostMan接口測試(很全面的接口測試教程)

    2.3 批量編輯多個參數

    如果想要批量的編輯參數,可以點擊右上角的Bulk Edit,去實現批量編輯。

    3. Postman發送POST請求詳講

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

    3.1.1 發送key-value 的請求:

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

    PostMan接口測試(很全面的接口測試教程)

    3.1.2 發送json格式的請求:

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

    PostMan接口測試(很全面的接口測試教程)

    3.1.3 發送文件的請求

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

    PostMan接口測試(很全面的接口測試教程)

    4. 環境變量設置

    4.1 設置環境變量的意義

    在測試 API 期間,往往存在多種環境,對應 IP 地址(或域名也不同)。比如:

    Dev:http://192.168.1.21/oa/index.jsp

    l 用于開發期間的線上的 Development 的測試環境

    LocalTest:http://192.168.1.42/oa/index.jsp

    l 用于開發期間配合后臺開發人員的本地局域網內的本地環境,用于聯合調試 API 接口

    Product:http://www.example.com/oa/index.jsp

    l 用于開發完成發布到生產環境

    在測試API期間,往往需要修改API地址,這樣效率會比較低且更換后的地址沒法保存。

    4.2 環境變量設置

    在Postman的設置區有Environment 和 Global Variable,用于解決這個問題,實現不同環境的管理:

    PostMan接口測試(很全面的接口測試教程)

    很明顯,就可以用來實現不用手動修改 url 中的服務器地址,從而動態的實現,支持不同服務器環境:

    l Production 生產環境

    l Development 開發環境

    l Local 本地局域網環境

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

    l URL

    l URL params

    l Header values

    l form-data/url-encoded values

    l Raw body content

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

    4.3 使用代碼設置環境變量

    我們可以在Pre-request Script和Test模塊中進行環境變量設置。

    --1.設置環境變量

    postman.setEnvironmentVariable("key", "value");

    --2.獲取環境變量

    pm.environment.get("variable_key");

    4.4 全局變量

    全局變量(Global Variable)顧名思義是針對于所有腳本和所有環境將生效的變量,它的作用域大于環境變量。設置全局變量的方法與環境變量相似:

    --1.設置全局變量

    pm.globals.set("variable_key", "variable_value");

    --2.獲取全局變量

    pm.globals.get("variable_key");
    文章轉自:https://www.cnblogs.com/laoluoits/p/12784933.html

    轉載必須注明來自: Chrome插件 ? PostMan接口測試教程之理論加實踐

    Postman for Linux(x64)

    Postman for Linux(x64)

    0 人評論 34335 次人瀏覽 2.0分 2.0 分
    Postman for Linux(x64)是一款針對Linux系統x64架構的功能強大的網頁調試與發送網頁HTTP請求應用程序。
    Postman for Linux(x86)

    Postman for Linux(x86)

    0 人評論 11861 次人瀏覽 4.0分 4.0 分
    Postman for Linux(x86)是一款針對Linux系統x86架構的功能強大的網頁調試與發送網頁HTTP請求應用程序。
    Postman for Win32

    Postman for Win32

    0 人評論 38895 次人瀏覽 3.5分 3.5 分
    Postman for Win32是一款針對Win32系統的功能強大的網頁調試與發送網頁HTTP請求應用程序。
    Postman for mac

    Postman for mac

    2 人評論 92261 次人瀏覽 2.7分 2.7 分
    Postman for mac是一個提供在MAC設備上功能強大的開發,監控和測試API的絕佳工具。
    Postman for Mac(v6.2.3)

    Postman for Mac(v6.2.3)

    0 人評論 9418 次人瀏覽 4.0分 4.0 分
    Postman是一款基于不同操作系統提供功能強大的 Web API & HTTP 請求調試的工具。最新版本是8.2日發布的Postman Mac(v6.2.3)。
    Postman for Mac(v6.6.1)

    Postman for Mac(v6.6.1)

    0 人評論 4654 次人瀏覽 3.0分 3.0 分
    Posman于2018年12月11日更新發布最新Postman for Mac(v6.6.1)。Postman for mac是一個提供在MAC設備上功能強大的開發,監控和測試API的絕佳工具。
    Postman for Mac V 7.3.4

    Postman for Mac V 7.3.4

    0 人評論 4400 次人瀏覽 3.0分 3.0 分
    Postman是500萬開發人員使用的唯一完整的API開發環境。 本文更新postman for Mac V 7.3.4。
    Postman for Win64(V6.0.10)

    Postman for Win64(V6.0.10)

    11 人評論 232376 次人瀏覽 3.2分 3.2 分
    Postman for Win64(V6.0.10)是一款針對Win64系統的功能強大的網頁調試與發送網頁HTTP請求應用程序。
    Postman Interceptor v1.1.1

    Postman Interceptor v1.1.1

    0 人評論 336 次人瀏覽 3.0分 3.0 分
    Postman Interceptor插件是一款可以幫助用戶通過Postman應用程序發送帶有瀏覽器Cookie請求的插件,功能類似fiddler。
    av看片免费观看网址
    評論:(0)

    已有 0 位網友發表了一針見血的評論,你還等什么?

    ?