重磅出擊!介面測試利器,為解決你的煩惱而生
一個強大的工具,基於 Postman 介面自動化場景設計
使用Xmind或者Yaml 設計 postman 自動化場景
引言
postman是一個比較輕量級的介面測試工具,在單個介面的測試表現優秀。在批量測試介面方面則提供了Runner Collections這種方式,雖然可以用來做流程測試,但在管理上不是很方便。例如:在postman建立一個collection作為介面文件,然後再建立另外一個collection作為場景測試,接著從介面文件的collection中挑選介面,並複製到場景測試的collection中,而且可能在不同的場景都共用同一個介面,這種方式是聽不錯的,只是當介面的版本升級之後,需要在場景中找出所有對應的介面進行修改,這樣在管理上會比較麻煩。
概念
這個工具根據Xmind或Yaml所寫的場景流程,從介面文件的collection中生成一個場景測試的collection,這樣即使版本升級,只需要重新生成一次即可,相當方便,同時也提供了一些方便的設參方式和斷言。
能做什麼
- 管理方便 。只需要管理介面文件的collection和Xmind/Yaml指令碼。
- 場景流程更直觀 。在Xmind/Yaml上可以直觀的看到整個流程,在細節上也可以看到每個介面的引數定義,以及斷言內容。
- 程式碼編寫簡化 。在測試行業中,普遍都是程式碼能力比較差,雖然測試不需要特別強的程式碼編寫能力,postman在Tests介面中也提供了一些快捷片段,但是還是不足夠簡化,而且也不全面,比如對請求的引數進行簽名。
- 提供一些快捷的函式。postman提供的內建函式還是比較少的,比如隨機生成32的UUID,md5,獲取當前時間,獲取前7天,前30天的日期,引數簽名等等,這些都需要自己手動寫程式碼。
- 無依賴性。本工具只是一個指令碼轉換成Postman的指令碼工具,即使以後不用,完全可以自己維護Postman的指令碼。 .......
先來看看效果圖
如何上手
使用 pip
安裝PostScene
pip install -U PostScene
呼叫
from post_scene.post_scene import PostScene
yaml_path = './yaml/demo.yaml' # 指令碼檔案的路徑
xmind_path = './xmind/demo.xmind' # 指令碼檔案的路徑
api_document_path = './api_document/demo.postman_collection.json' # postman json data 檔案的路徑
api_document_url = 'https://www.getpostman.com/collections/馬賽克馬賽克馬賽克馬賽克' # 也可以使用Postman的share link
# PostScene.covert(yaml_path, api_document_path,scene_dirs='./scene')
# PostScene.covert(xmind_path, api_document_path,scene_dirs='./scene')
PostScene.covert(yaml_path, api_document_path,scene_dirs='./scene')
例子
- 新建一個檔案,名字叫什麼不重要,但為了迭代開發的考慮,最好還是加上版本號。
demo-scenev1.0.yaml
- 指令碼編寫
name: demo-scenev1.0 #collection 的名字
scene:
name: 下單流程 #collection資料夾的名字
scene:
登陸: #API介面名稱
pre: #介面請求前指令碼
sign: #引數簽名
secret: 1850e165f1fc19420f2ba3d3a1a5ffe4
set: #設定變數值
userName: user
password: user123
time: $$times #獲取現在的時間
onceToken: $$uuid32 #生成32位的uuid
tests: #請求後指令碼
assert: #請求後斷言
express:
content: $json.data.code === '1' #斷言返回的json資料的code 是否等於1
set: #斷言成功儲存token和uid資料
token: $json.data.token
uid: $json.data.uid
通過餐廳名字搜尋餐廳:
pre:
sign:
secret: 1850e165f1fc19420f2ba3d3a1a5ffe4
set:
canteenName: 喜茶
tests:
assert:
expect: #斷言返回的canteenList的每一個物件的名稱都包含喜茶
content: $json.data.canteenList
item: $it.name
include: 喜茶
set:
canteenId: $$find(json.data.canteenList, it.canteenName == '喜茶GO').canteenId #獲取喜茶Go的CanteenId
通過商品名字搜尋商品:
pre:
sign:
secret: 1850e165f1fc19420f2ba3d3a1a5ffe4
ref: canteenId
set:
goodsName: 奧利奧千層
tests:
assert:
expect:
content: $json.data.goodsList
item: $item.name
include: 奧利奧千層
set:
goodsId: $$find(json.data.goodsList, it.goodsName == '奧利奧千層').goodsId
加入購物車:
pre:
sign:
secret: 1850e165f1fc19420f2ba3d3a1a5ffe4
ref: goodsId
set:
count: 1
tests:
assert:
express:
content: $json.code === '1'
set:
pocketId: $json.data.pocketId
.......
- 指令碼轉換
- 使用git或者瀏覽器下載本專案,再用pycharm開啟。
- 在Postman中選擇你已經準備好的api文件collection 然後匯出。這裡匯出為 demo.postman_collection.json
- 把匯出的文件放入專案中的api_document 指令碼放入xmind或yaml
- 開啟src檔案中的Index.py 把xmind_path和api_document_path改成你的,右鍵 Run Index。
- 生成的場景檔案放在src/scene資料夾中,使用postman的import 把他匯入
- 最後可以開始Run collection啦
相關文章
- 軟體測試人員的煩惱
- 你還在為元件文件煩惱嗎?元件
- 何爹瀏陽蒸菜—解決你開店的煩惱
- 不用費勁,這5款效率工具為你解決學習工作煩惱
- 免費API介面集合, 讓你的開發無煩惱API
- dart系列之:還在為編碼解碼而煩惱嗎?用dart試試Dart
- 介面測試的解決方案
- Istio:微服務開發的終極利器,你還在為繁瑣的通訊和部署流程煩惱嗎?微服務
- 聽說你在為天天寫業務程式碼而煩惱?
- 解耦解的早,改需求沒煩惱解耦
- 80埠的煩惱
- 一鍵解決Android專案圖片壓縮煩惱,為apk瘦身!AndroidAPK
- 擺脫詳情頁設計的文案排版困難!解決你的設計煩惱!
- 你還在為無法下載網站視訊煩惱嗎?試試You-Get,統統幫你搞定網站
- 推動企業高效發展,免費OA辦公系統解決你的煩惱!
- 如何用極低成本解決網站託管煩惱?網站
- GoPro無人機墜機問題已解決 一張膠帶解決煩惱Go無人機
- UNIX下檔案的刪除與回收-“ rm”煩惱的解決(轉)
- 歷屆試題 國王的煩惱(並查集)並查集
- KANO模型,一個能解決你工作中90%煩惱的需求分析神器模型
- 智慧電銷坐席海量外呼I解決銷售煩惱
- 微軟打擊盜版出新招 彈出氣球令盜版者煩惱微軟
- 必由學:用軟體開發雲解決成長的煩惱
- 工程師如何解決穿衣搭配煩惱?工程師
- 介面測試的價值(為什麼要做介面測試)
- 還在為Android表情開發煩惱嗎,快來試試Android Emoji吧Android
- 四款Apple Watch行動式充電器 解決充電煩惱APP
- 介面自動化測試解決方案
- 一個實用的ASP分頁函式,解決你重複寫分頁程式碼的煩惱 (轉)函式
- 剛剛,OpenAI重磅釋出互動介面canvas,讓ChatGPT成為寫作和程式設計利器OpenAICanvasChatGPT程式設計
- 煩惱是人生的一部分——《少年維特的煩惱》讀書筆記筆記
- API 測試 | 瞭解 API 介面測試 | API 介面測試指南API
- Flutter VIPER架構-解決複用和測試問題的利器Flutter架構
- 為什麼要做介面測試?可做介面測試的軟體測試公司分享
- API測試:瞭解API介面測試與API介面測試指南API
- ? python 介面自動化 (二)--什麼是介面測試、為什麼要做介面測試 (詳解)Python
- 【重磅來襲】SOA架構的域控制器測試解決方案架構
- 贈送天翼雲電腦,解決一點園子的商業化煩惱