其他 接口自動化測試 知識參考:接口自動化測試
目錄
一、Postman介紹和安裝
1、簡介
2、安裝
3、安裝Postman插件newman?
二、Postman基本用法
1、案例一
2、案例二
三、Postman高級用法
1、管理測試用例Collections
1.1、創(chuàng)建 collections
1.2、創(chuàng)建 用例集、子目錄和 請求
2、用例集導(dǎo)出、導(dǎo)入
2.1、導(dǎo)出
2.2、導(dǎo)入
3、Postman 斷言簡介
4、Postman 常用斷言
4.1、斷言響應(yīng)狀態(tài)碼
4.2、斷言響應(yīng)體是否包含某個字符串
4.3、斷言響應(yīng)體是否等于某個字符串(對象)
4.4、斷言JSON數(shù)據(jù)
4.5、斷言響應(yīng)頭
5、Postman斷言工作原理
6、全局變量和環(huán)境變量
6.1、全局變量?
6.2、環(huán)境變量
7、Postman 請求前置腳本
8、Postman 請求前置腳本的工作原理
9、Postman 關(guān)聯(lián)?
批量執(zhí)行測試用例
四、Postman測試報告
使用newman生成測試報告
其他 接口自動化測試 知識參考:接口自動化測試
一、Postman介紹和安裝
1、簡介
Postman是一款非常流行的接口調(diào)試工具,它使用簡單,而且功能也很強大。不僅測試人員會使用,開發(fā)人員也會經(jīng)常使用。
特征:
簡單易用的圖形用戶界面
可以保存接口請求的歷史記錄
使用測試集Collections可以更有效的管理組織接口
可以在團隊之間同步接口數(shù)據(jù)
最新版本下載 官方下載頁面?下載鏈接:Win64?Win32?Mac?Linux - 注意????????????看下面????????????注意 歷史版本下載 請把下面鏈接的"版本號"替換為指定的版本號,例如:9.12.2 Windows64位 https://dl.pstmn.io/download/version/版本號/win64 Windows32位 https://dl.pstmn.io/download/version/版本號/win32 Mac Intel Chip https://dl.pstmn.io/download/version/版本號/osx_64 Mac Apple Chip https://dl.pstmn.io/download/version/版本號/osx_arm64 Linux https://dl.pstmn.io/download/version/版本號/linux 官網(wǎng)? ? ? ? ?漢化步驟與漢化文件下載地址???????
2、安裝
雙擊Postman安裝包,全自動安裝,不需要任何人為干預(yù)。 安裝完成后,會默認打開英文注冊頁面?;蛘呤謩哟蜷_注冊頁面。 自行翻譯英文頁面提示,根據(jù)提示完成注冊或登錄,完全免費
3、安裝Postman插件newman?
前提:安裝node.js
1. windows使用win + R,輸入cmd打開終端,輸入命令 npm -v,如能顯示版本號(版本略有差異無所謂)。 可跳過 “1 安裝node.js” 這步,直接看 “2 安裝 newman”。
????????如顯示, npm 命令無法識別,則需下載node.js(下載地址),下載完成雙擊安裝即可,安裝完成后,在終端輸入npm -v驗證是否安裝成功。
2.?安裝newman (前提:確保 npm -v 驗證通過)
????????在線安裝命令:
npm install -g newman
????????盡量避開網(wǎng)絡(luò)訪問高峰期(早7:30~9:30 午11:30~14:30 晚18:30~22:30)安裝,保證安裝時網(wǎng)絡(luò)穩(wěn)定。 如果安裝失敗,反復(fù)嘗試。大約嘗試 10 幾次 或 幾十次!
? ? ? ? 國內(nèi)推薦切換npm鏡像源:
????????
?
nrm -V 查看版本,以及是否安裝成功 # 1.查看當前使用的鏡像地址 nrm ls 查看所有源地址, *表示當前使用的鏡像地址 # 2.切換鏡像源 淘寶 nrm use taobao
3.?安裝newman-reporter-html
npm install -g newman-reporter-html
二、Postman基本用法
1、案例一
使用 postman 發(fā)送 http請求,訪問 tpshop 商城的 “搜索” 接口
訪問 tpshop 商城的 “搜索” 接口所需要的信息:
—— 結(jié)合 F12 瀏覽器開發(fā)者工具分析:
請求方法:GET
URL:http://tpshop-test.itheima.net/Home/Goods/search.html?q=%E6%89%8B%E6%9C%BA
請求頭:無
請求體:無
返回數(shù)據(jù):html網(wǎng)頁
2、案例二
使用 Postman 向 topshop 商城 登錄接口 發(fā)送一個密碼錯誤的 登錄請求
請求方法:post
URL:http://tpshop-test.itheima.net/index.php?m=Home&c=User&a=do_login&t=0.6693319462870182
請求頭:Content-Type:application/x-www-form-urlencoded
請求體:
username: 13812345678
password: 12345699999
verify_code : 8888
返回數(shù)據(jù):
{"status":-2,"msg":"密碼錯誤!"} ---- 實際返回結(jié)果 “驗證碼錯誤” 與業(yè)務(wù)有關(guān),后續(xù)說明
?
?
三、Postman高級用法
1、管理測試用例Collections
1.1、創(chuàng)建 collections
1.2、創(chuàng)建 用例集、子目錄和 請求
2、用例集導(dǎo)出、導(dǎo)入
2.1、導(dǎo)出
?
?
2.2、導(dǎo)入
?
3、Postman 斷言簡介
postman 斷言借助 JavaScript - js 語言編寫代碼,自動判斷預(yù)期結(jié)果與實際結(jié)果是否一致。
斷言 代碼寫在 Tests 的標簽中。
4、Postman 常用斷言
4.1、斷言響應(yīng)狀態(tài)碼
Status code: Code is 200
在 Tests 標簽中,選中 Status Code:code is 200, 生成對應(yīng)代碼
適當調(diào)整 test() 方法參數(shù)1,和 匿名函數(shù)中的 預(yù)期結(jié)果。
點擊 send 按鈕,發(fā)送請求,執(zhí)行斷言代碼。
查看斷言結(jié)果。
// 斷言響應(yīng)狀態(tài)碼 是否為 200 pm.test("Status code is 200", function () { pm.response.to.have.status(200); }); pm:代表 postman 的一個實例 test():是 pm實例的一個方法。有兩個參數(shù) 參數(shù)1:在斷言成功后,給出的文字提示??梢孕薷摹?Status code is 200" 參數(shù)2:匿名函數(shù)。 pm.response.to.have.status(200); // 意思:postman 的響應(yīng)結(jié)果中應(yīng)該包含狀態(tài)碼 200 200 ——> 預(yù)期結(jié)果!
4.2、斷言響應(yīng)體是否包含某個字符串
Response body: Contains string
// 斷言響應(yīng)體包含指定字符串 pm.test("Body matches string", function () { pm.expect(pm.response.text()).to.include("string_you_want_to_search"); }); pm:postman的一個實例 test(): postman實例的方法,有兩個參數(shù) 參1:斷言后顯示的文字提示信息,可改。 參2:匿名函數(shù) pm.expect(pm.response.text()).to.include("string_you_want_to_search"); // 意思:pm 期望 響應(yīng)文本 中,包含 xxxx 字符串。 "string_you_want_to_search" ——> 預(yù)期結(jié)果。 可以修改
4.3、斷言響應(yīng)體是否等于某個字符串(對象)
Response body: Is equal to a string
// 斷言 響應(yīng)體 等于某個字符串(對象) pm.test("Body is correct", function () { pm.response.to.have.body("response_body_string"); }); pm.response.to.have.body("response_body_string"); // 意思是,pm 的 響應(yīng)中應(yīng)該有 響應(yīng)體 xxx "response_body_string" ——> 預(yù)期結(jié)果。 可以修改
4.4、斷言JSON數(shù)據(jù)
Response body: JSON value check
// 斷言json的響應(yīng)結(jié)果 pm.test("Your test name", function () { var jsonData = pm.response.json(); pm.expect(jsonData.value).to.eql(100); }); var jsonData = pm.response.json(); // var jsonData: 用js語法定義一個變量。jsonData 就是變量名 // pm.response.json(); 代表響應(yīng)的json結(jié)果 /* 舉例:response.json(); { "success": true, "code": 10000, "message": "操作成功!", "data": "95c78d75-721c-40fb-b2d5-742fea42cbd5" } */ pm.expect(jsonData.value).to.eql(100); // 意思:pm 預(yù)期 json結(jié)果 key對應(yīng)的值 等于 xxx // to.eql(100); 中的 100 代表預(yù)期結(jié)果??梢孕薷牡?。 /* 舉例: jsonData.value 的 value: 取 :success、code、message、data */
示例:
// 斷言json的響應(yīng)結(jié)果-success的值為true pm.test("斷言響應(yīng)結(jié)果success的值為true", function () { var jsonData = pm.response.json(); pm.expect(jsonData.success).to.eql(true); }); pm.test("斷言響應(yīng)結(jié)果中code的值為10000", function () { var jsonData = pm.response.json(); pm.expect(jsonData.code).to.eql(10000); }); pm.test("斷言響應(yīng)結(jié)果中message的值為 操作成功", function () { var jsonData = pm.response.json(); pm.expect(jsonData.message).to.eql("操作成功!"); });
4.5、斷言響應(yīng)頭
Response headers: Content-Type header check
// 斷言響應(yīng)頭 pm.test("Content-Type is present", function () { pm.response.to.have.header("Content-Type"); }); pm.response.to.have.header("Content-Type"); // pm 的響應(yīng) 頭中包含 Content-Type // 示例:可以在 header 中,添加 響應(yīng)頭中的 key 對應(yīng)的 value 判定。用 ,隔分。 // 斷言響應(yīng)頭 pm.test("Content-Type is present", function () { pm.response.to.have.header("Content-Type", "application/json;charset=UTF-8"); });
5、Postman斷言工作原理
6、全局變量和環(huán)境變量
6.1、全局變量?
概念:在 Postman 全局生效的變量,全局唯一。
設(shè)置:
代碼設(shè)置:
pm.globals.set(“全局變量名”,全局變量的值)
// 示例: pm.globals.set("glb_age", 100)
獲?。?/p>
代碼獲取:
var 接收值的變量 = pm.globals.get(“全局變量名”)
// 示例: var ret = pm.globals.get("glb_age") ?// ret 的值為 100
請求參數(shù)獲取(postman界面獲?。?
{{全局變量名}}
// 示例: {{glb_age}}
6.2、環(huán)境變量
概念:在 特定環(huán)境(生產(chǎn)環(huán)境、開發(fā)環(huán)境、測試環(huán)境)下,生效的變量,在本環(huán)境內(nèi)唯一。
設(shè)置:
代碼設(shè)置:
pm.environment.set("環(huán)境變量名", 環(huán)境變量值)
// 示例 pm.environment.set("env_age", 99)
獲?。?/p>
代碼獲?。?code>var 接收值的變量 = pm.environment.get("環(huán)境變量名")
// 示例 var ret = pm.environment.get("env_age") ?// ret 的值為 99
請求參數(shù)獲取(postman界面獲?。?span style="color:#4da8ee;">
{{環(huán)境變量名}}
// 示例 {{env_age}}
7、Postman 請求前置腳本
在 send 按鈕點擊后,請求前置腳本代碼,第一時間被執(zhí)行。在 postman 內(nèi)部實際 http請求之前。
假設(shè),這樣一種場景:
調(diào)某接口時,要輸入 “時間戳”,如果輸入的 “時間戳” 的絕對值,超過標準時間10分鐘。 則不允許調(diào)用。
時間戳
時間戳:對應(yīng)絕對時間,從 1970年1月1日00:00:00 到現(xiàn)在 所經(jīng)歷的秒數(shù)。
一天:86400秒
51年 6月(180) 9天 --- 1,624,665,600 秒
案例
調(diào)用百度首頁接口,傳時間戳給服務(wù)器
實現(xiàn)步驟:
在 Pre-request Script 標簽頁中,添加代碼。拿到時間戳,寫入全局變量
// 拿到時間戳 var timestamp = new Date().getTime() ? // 將時間戳設(shè)置到 全局變量 pm.globals.set("glb_timestamp", timestamp)
點擊 Send 按鈕,發(fā)送請求。請求發(fā)送前執(zhí)行 上述代碼。寫入全局變量
查看寫入的變量
在 請求參數(shù)(界面)中,使用全局變量。{{全局變量名}}
在 postman的 控制臺,查看 發(fā)送的 http請求
8、Postman 請求前置腳本的工作原理
9、Postman 關(guān)聯(lián)?
介紹:應(yīng)用于 多個 http請求之間,有數(shù)據(jù)關(guān)聯(lián)、或依賴關(guān)系時。
實現(xiàn)步驟
A接口 依賴 B接口 的數(shù)據(jù)
向B接口發(fā)送http請求,獲取數(shù)據(jù)
將數(shù)據(jù) 設(shè)置 至 全局變量(環(huán)境變量)中
A 接口 獲取 全局變量(環(huán)境變量)中 數(shù)據(jù)值,進行使用。
案例
請求 獲取天氣接口, 提取響應(yīng)結(jié)果中的 城市, 將城市名,給百度搜索接口使用。
實現(xiàn)步驟:
創(chuàng)建 用例集,分別創(chuàng)建 查詢天氣 請求 和 百度搜索的請求
在查詢天氣請求 Tests 中,編寫代碼 獲取 城市名,寫入全局變量
// 獲取 全部響應(yīng)結(jié)果 var jsonData = pm.response.json() // 從響應(yīng)結(jié)果中 獲取 城市名 var city = jsonData.weatherinfo.city // 將城市名寫入到全局變量 pm.globals.set("glb_city", city)
點擊 Send 按鈕,發(fā)送 請求,查看設(shè)置的全局變量。
修改 百度搜索請求,使用全局變量,按 城市名進行搜索。
http://www.baidu.com/s?wd={{glb_city}}
批量執(zhí)行測試用例
四、Postman測試報告
參考:接口自動化測試(三)—— Postman讀取外部數(shù)據(jù)文件(參數(shù)化)
安裝newman?,請參考上方安裝插件。
使用newman生成測試報告
步驟:
批量執(zhí)行測試用例集。(確認無誤)
導(dǎo)出 Export 用例集。(得到 xxxx.json文件)
在 終端 中 執(zhí)行命令,生成測試報告文章來源:http://www.zghlxwxcb.cn/news/detail-410597.html
# 現(xiàn)在 終端中,測試一下。
newman run xxxx.json
# 完整的命令
newman run xxxx.json -e 環(huán)境變量文件 -d 外部數(shù)據(jù)文件 -r html --reporter-html-export 測試報告名.html
# 示例:
newman run 批量執(zhí)行測試用例.postman_collection.json -r html --reporter-html-export 我的第一個測試報告.html
# 如果添加 -r html 就報錯!說明: newman-reporter-html 安裝失??!
#示例
newman run ihrm項目.postman_collection.json -e 測試環(huán)境.postman_environment.json -r htmlextra --
reporter-htmlextra-export ihrm項目完整測試報告.html
?其他 接口自動化測試 知識參考:接口自動化測試文章來源地址http://www.zghlxwxcb.cn/news/detail-410597.html
到了這里,關(guān)于接口測試(二)—— Postman用法詳解、newman生成測試報告的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!