本文已被51測試網(wǎng)收錄:https://mp.weixin.qq.com/s/j1OZOiqmYQ5Yc2hFZrTP8g
目錄
一、<a href="#1">postman 基礎(chǔ)知識 </a>
二、<a href="#2">postman 變量與集合</a>
三、<a href="#3">postman 腳本應(yīng)用(sandbox)</a>
四、<a href="#4">postman 接口自動化實現(xiàn)</a>
五、<a href="#5">postman 與第三方框架結(jié)合</a>
六、<a href="#6">實戰(zhàn)演練(合同系統(tǒng))</a>
<a name ="1" id="1">
一、postman 基礎(chǔ)知識
1. postman 版本選擇
postman分為chrome插件版和native版本,插件版的有很多功能都受限制:
比如native必須要安裝擴展才可以操作cookie,headers設(shè)置受限制,
沒有native版本的Postman console,非常不方便調(diào)試
2.為什么選擇postman作為自動化框架
優(yōu)點: 門檻低,上手快,界面操作簡潔方便
優(yōu)點: 使用js語言編寫腳本,語法簡單
優(yōu)點: 自帶各種代碼模塊,按需使用即可
優(yōu)點: 自動化框架有命令行版本:newman,方便放在服務(wù)器上運行,做持續(xù)集成
優(yōu)點: 支持抓包,保存歷史記錄,多終端,多用戶同步測試用例
優(yōu)點: 支持讀取數(shù)據(jù)文件,json,csv
優(yōu)點: 如果項目有Swagger生成API文檔,JSON文件可以直接導(dǎo)入Postman來生成用例
不支持:通過url搜索用例,通過命令行傳參修改環(huán)境變量,不能指定執(zhí)行失敗的測試用例
不理想:不能操作文件相關(guān)的操作,不能讀寫數(shù)據(jù)庫,不能使用非HTTP協(xié)議
不理想:不方便調(diào)試自動化代碼。
3. 賬號和數(shù)據(jù)同步
用戶免費注冊賬號后可以獲得以下權(quán)限:
①同步和備份歷史、集合、環(huán)境、與指頭
②輕松處理來自不同機器的postman實例
4. 發(fā)送請求
強調(diào)點:需要發(fā)送上傳文件的請求,在body中選擇選擇form-data ,選擇File選項后即可選擇文件
強調(diào)點:設(shè)置請求頭和管理請求頭
5. 代理抓包
由于postman不是類似fiddle這種專門用于抓包的軟件,所以需要手動打開代理設(shè)置
①點擊右上角的攔截圖標(biāo),打開【Capture requests】,設(shè)置Port和Target
②打開瀏覽器的代理設(shè)置,設(shè)置相同端口
手機端設(shè)置方法:https://learning.getpostman.com/docs/postman/sending_api_requests/capturing_http_requests
6. postman 控制臺
打開左下角打開【postman console】控制臺,方便查看接口調(diào)試的打印信息
<a name ="2" id="2">
二、postman 變量與集合
1. 變量
為什么要使用變量,如果某個參數(shù)值只需要在某個獨立接口的使用一次,那么我們可以不使用變量,但是如果變量需要在多個位置重復(fù)使用,或者發(fā)生接口傳遞(即前一個接口的返回值用于下一個接口的請求參數(shù)),那么借助變量,postman就可以實現(xiàn)業(yè)務(wù)邏輯與測試數(shù)據(jù)分離,幫助我們建立健壯的測試用例。
2. 變量作用域:
全局變量(Global):主要用于需要在多個位置重復(fù)使用的幾乎不改變的數(shù)據(jù)
環(huán)境變量(environment):主要用于接口傳遞的參數(shù)
局部變量(local):集合/文件/接口中 某個js腳本中的變量
數(shù)據(jù)變量(data):主要用于并發(fā)測試(json/csv文件)
同變量名的情況下,優(yōu)先級范圍:局部變量> 環(huán)境變量> 全局變量
3 . 設(shè)置變量:
① 在postman的ui上進(jìn)行定義
② 使用腳本定義 pm.environment.set("new_name", "zhougang");
4. 使用變量:
① Builder中的使用:{{varname}}
② js 腳本中的使用:pm.environment.get("variable_key");
5. 集合
為什么要使用集合?
①組織業(yè)務(wù)邏輯:分類和存儲接口
②方便一鍵運行:在runner中選擇要運行的collection或者里面的文件夾進(jìn)行運行
③方便導(dǎo)入導(dǎo)出:導(dǎo)出和導(dǎo)入json文件,如使用newman在命令行執(zhí)行(集合和變量的導(dǎo)出是分開的)
③方便分享:分享至自己團(tuán)隊的共享目錄下
<a name ="3" id="3">
三、postman 腳本應(yīng)用(sandbox)
postman支持js語言,它允許用戶向請求和集合添加動態(tài)行為。通過使用js腳本,可以構(gòu)建包含動態(tài)參數(shù)的請求,在請求之間傳遞數(shù)據(jù)。用戶可以在下面兩個事件流中添加js代碼。
①在請求發(fā)送前,在“pre-request script”選項卡下輸入腳本,主要用于設(shè)置測試需要的測試參數(shù)
②在請求發(fā)送后,在“test”選項卡下輸入腳本,主要用于做斷言
③右邊會有自帶各種代碼模塊,按需使用即可,常用示例如下:
/** test示例 */
var jsonData = pm.response.json();
pm.test("操作是否成功", function () {
pm.expect(jsonData.code).to.eql(1);
});
pm.test("接口返回時間是否超過2s", function () {
pm.expect(pm.response.responseTime).to.be.below(2000);
});
tests["名稱是否正確"] = jsonData.data.name === pm.environment.get("customer_contract_name");
tests["管理人是否正確"] = jsonData.data.manage_user === pm.environment.get("admin_user_name");
tests["組織是否正確"] = jsonData.data.manage_org_name === pm.environment.get("org_name");
pm.environment.set("variable_key", "variable_value");
//使用變量{{variable_key}}
如果這里沒有你需要的,可以查看幫助文檔
https://learning.getpostman.com/docs/postman/scripts/postman_sandbox_api_reference/
用戶可以將與請求和測試腳本添加到一個集合,一個文件,一個請求中
優(yōu)先級:請求>文件>集合
<a name ="4" id="4">
四、postman 接口自動化實現(xiàn)
1. 使用postman自帶的 runner工具
①在runner中選擇要運行的collection或者里面的文件夾進(jìn)行運行
②enviroment:選擇用例跑的環(huán)境變量集合
③iterations:接口迭代次數(shù)(接口自動化 默認(rèn)使用1就行,1以上一般拿來做并發(fā)測試)
④delay:每個接口發(fā)起請求的的間隔時間(建議200ms)
⑤data:數(shù)據(jù)文件,可以是json格式的,也可以是csv格式的(一般用于并發(fā)測試)
⑤keep variable values: 重點?。。”仨氁瓷?,環(huán)境變量將會更新
⑥start run:運行結(jié)果集,并查看結(jié)果頁,可導(dǎo)出
執(zhí)行順序設(shè)定(此代碼只在runner和Newman中生效):
postman.setNextRequest('接口名稱');// 設(shè)定下一請求執(zhí)行路徑
運行結(jié)果頁:
2. 使用postman插件:Newman
官方說明文檔:https://www.npmjs.com/package/newman(https://www.npmjs.com/package/newman
①首先需要安裝node.js環(huán)境(同時安裝了npm)
下載地址:http://nodejs.cn/download/
②使用命令行安裝 Newman
npm install -g newman
安裝導(dǎo)出html報告的包: npm install -g newman-reporter-html
③Newman運行命令腳本,一般只需要指定運行集合、運行環(huán)境、間隔時間,數(shù)據(jù)文件,指定輸出報告的模板和位置
原始腳本: newman run xxx.json
添加下述定制化參數(shù):
指定運行環(huán)境變量集合: --environment xxx.environment.json
指定輸出環(huán)境變量集合: --export-environment xxx.environment.json
指定輸出報告形式:-r cli,html
指定輸出報告文件: --reporter-html-export xxx.htm
指定接口間隔時間: --delay-request 100
進(jìn)入腳本所在文件目錄,運行腳本(保存成腳本文件,直接運行即可)
newman run cms_init.postman_collection.json --environment cms-test.environment.json --export-environment cms-test.environment.json -r cli,html --reporter-html-export ./reports/cms_init_html_output.htm --delay-request 120
運行結(jié)果(命令行):
運行結(jié)果(html格式):
<a name ="5" id="5">
六、postman 與第三方框架結(jié)合(維護(hù))
1. 與Git結(jié)合 (版本控制)
①將集合的腳本文件導(dǎo)出到目錄下
②然后使用相關(guān)git命令推送到遠(yuǎn)程倉庫即可
備注:多人協(xié)作可同時使用postman的分支管理,更好的維護(hù)接口代碼
2. 與jenkins結(jié)合 (持續(xù)集成)
當(dāng)我們將代碼推送到git上后,可以使用jenkins直接構(gòu)建任務(wù)即可,省去了腳本打包放到對應(yīng)服務(wù)器再啟用對應(yīng)環(huán)境腳本的麻煩。
參考鏈接:http://www.lxweimin.com/p/18863c609019
參考鏈接:https://blog.csdn.net/qq_16510189/article/details/79074809
①下載jenkins的war包,使用java -jar jenkins.war --httpPort=8080啟動, 按照配置jenkins完成
②在Jenkins中安裝對應(yīng)的插件,Git、NodeJS 插件
③新建job,配置相關(guān)內(nèi)容
git配置
定時器配置
構(gòu)建環(huán)境配置
構(gòu)建腳本
③選擇構(gòu)建,查看控制臺
3. 與釘釘機器人結(jié)合
<a name ="6" id="6">
六、實戰(zhàn)演練
以合同管理系統(tǒng)為例(演示)