apiAutoTestWeb使用說明
apiAutoTestWeb是為apiAutoTest的視覺化版本,其採用前後端分離(FastAPI + Vue2)方式實現
具體使用: Python3 + FastAPI + Vue + element-ui + vue element admin + Tortoise ORM + jwt(python-jose) + apscheduler + aiohttp + aiofiles + jsonpath
演示地址
目的
嘗試將學了一年FastAPI 和Vue 做個結合,動手做才能更快的獲得知識,在做的時候基本是遇到什麼問題就查,最終出來了這一版本.
相比apiAutoTest
-
header支援使用自定義函式以及其他介面引數變數
弊端: 將無法再對單個用例不使用header或者單獨使用header,為此移除了token操作
-
增加了定時任務, 後臺執行
-
支援graphql規範介面測試
-
將excel資料託管到視覺化介面和資料庫管理
弊端: 感覺更繁瑣了,需要不停的在頁面切換
-
暫不支援SQL
tip: 不排除自定義函式中可以使用sql
-
擴充套件函式
不支援,安裝第三方庫
-
前端表單填寫採用文字域,沒法校驗是否有問題
-
上傳檔案介面暫不支援
功能介紹
1. 登入
- 頁面並沒有寫註冊入口, 暫時只能通過介面來註冊.
- 預設的演示賬號: tester 密碼: 123456
2. 首頁
3. 說明文件
4. 專案管理
5. 環境管理
- 基準header, 類似JSON的寫法
{"Authorization":"${token}"}
欲使用token,當token變數存在的時候會自動給其替換,其他介面(在token提取介面之後的)將被自動使用, 其具體效果見報告詳細
,變數知識(見用例模組)
- 當然也可以使用
自定義函式
來解決下面的問題
6. 介面管理
-
也實用一般的http/https(帶證照暫未測試,應該不支援)介面
路徑可以使用
自定義函式
、引數變數
-
目前個人公司專案接觸到,發現只能是post請求,json資料格式傳輸
7. 用例管理
-
RESTful規範
-
引數型別: 根據介面文件選擇
-
請求引數: 類json(
只所以說是類json寫法是因為後面有些地方使用非字串的引數時會有是不合法json的情況
)寫法, 可以使用自定義函式
,引數變數
-
預期結果:
{"$.meta":{ "msg": "登入成功", "status": 200 }}
,$.meta
實際結果(將會通過jsonpath對當前介面的響應提取內容$.meta為jsonpath表示式,意為從當前響應json中提取第一層級為key為meta的內容
),{ "msg": "登入成功", "status": 200 }
預期結果內容, 支援多個預期結果,新增多個鍵值對即可 -
提取引數:
{"token":"$.data.token"}
,token
為引數變數,$.data.token
從當前介面響應提取token的值並賦值給自定義變數token, 如果已經存在變數token,那麼這個token 會覆蓋之前的變數token內容, -
GraphQL規範: 除了query語句部分不同,其他一致
8. 任務管理
- 立即執行: 必須等待執行完成之後,自動跳轉報告資訊,且無法在測試過程中去做其他操作
- 後臺執行:任務將在後臺執行,需要執行去報告管理檢視,然後可以去做其他操作
- 定時資訊:展示該任務的定時資訊,會顯示下次執行時間
- 刪除: 會刪除任務以及定時任務
-
選擇用例:需先選擇對應的環境,然後此處可以選擇對應專案下的所有用例,
已選中用例的展示順序,將決定介面依次執行的順序,會直接影響到每個介面變數引數的使用
,你應該在使用變數引數前執行提取該變數引數的介面 -
定時任務:目前定時任務是寫在記憶體中的,每次應用重啟,已有的定時任務都會失效
可通過,刪除任務,編輯任務的定時任務開關來刪除或者關閉定時任務
為避免伺服器歇菜,還請謹慎使用定時任務, 及時關閉,並且伺服器上設定了每天早5點30分會對專案進行重新部署,每次重新部署後所有定時任務都將失效(任務儲存在記憶體中)
-
定時規則: 遵頊
cron
表示式示例給出的* * * * *
意為每分鐘執行一次任務
9. 報告管理
- 點選測試結果可篩選結果
- 點選首行的箭頭展開檢視詳細
報告解讀
-
請求資訊:
顯示當前用例的請求前 VS 請求後的 資料處理
-
提取引數:
顯示當前用例的提取參數列達式
-
響應結果:
顯示當前用例的響應結果
-
斷言資訊:
顯示當前用例的斷言內容
$.meta ? {'msg': '登入成功', 'status': 200}
用例中書寫的預期結果內容{'msg': '登入成功', 'status': 200} == {'msg': '登入成功', 'status': 200}
處理後實際的預期結果內容 -
當前引數池:
顯示當前用例執行之後的可用引數變數
-
異常資訊:
顯示當前用例執行出現的異常資訊
關於異常的種類分析還需要統計後,也許後面會更新在文件上,目前如果出現異常請仔細檢視
請求資訊
,和異常資訊
等內容
7. 擴充套件指令碼
每次編輯之後,需要儲存才會生效,此處的函式僅能作用於
介面path,用例請求引數、預期結果
中,不支援除錯
8. Json校驗
提供了實時的json格式校驗
參考資料
-
Element-ui: https://element.eleme.cn/#/zh-CN/component/installation
-
vue-element-admin: https://panjiachen.gitee.io/vue-element-admin-site/zh/
-
FastAPI: https://fastapi.tiangolo.com/
-
Tortoise ORM: https://tortoise-orm.readthedocs.io/en/latest/
還有原始碼中註釋的連結資料
最後
- 感謝在此過程中我查過的所有資料的作者,提供答案的網友
- 該專案作為一個
Demo
,任有很多Bug
和冗餘程式碼可以優化 - 如果你有什麼建議或者
Bug
反饋可以在原始碼倉庫進行反饋 - 如果你也想加入這個專案可以直接申請成為倉庫成員
- 如果你需要及時得到問題回覆可以加入該QQ群
851163511
- 如果你覺得這個專案有點用處,有幫助到你,還請點個
star
- 視訊過程