FastAPI + Vue 前後端分離 介面自動化測試工具 apiAutoTestWeb

zy7y發表於2021-05-06

apiAutoTestWeb使用說明

apiAutoTestWeb是為apiAutoTest的視覺化版本,其採用前後端分離(FastAPI + Vue2)方式實現

具體使用: Python3 + FastAPI + Vue + element-ui + vue element admin + Tortoise ORM + jwt(python-jose) + apscheduler + aiohttp + aiofiles + jsonpath

演示地址

http://49.232.203.244:2152/

點選即可訪問: 前端入口, 介面文件

目的

嘗試將學了一年FastAPI 和Vue 做個結合,動手做才能更快的獲得知識,在做的時候基本是遇到什麼問題就查,最終出來了這一版本.

相比apiAutoTest

  1. header支援使用自定義函式以及其他介面引數變數

    弊端: 將無法再對單個用例不使用header或者單獨使用header,為此移除了token操作

  2. 增加了定時任務, 後臺執行

  3. 支援graphql規範介面測試

  4. 將excel資料託管到視覺化介面和資料庫管理

    弊端: 感覺更繁瑣了,需要不停的在頁面切換

  5. 暫不支援SQL

    tip: 不排除自定義函式中可以使用sql

  6. 擴充套件函式

    不支援,安裝第三方庫

  7. 前端表單填寫採用文字域,沒法校驗是否有問題

  8. 上傳檔案介面暫不支援

功能介紹

1. 登入

  • 頁面並沒有寫註冊入口, 暫時只能通過介面來註冊.
  • 預設的演示賬號: tester 密碼: 123456

2. 首頁

3. 說明文件

4. 專案管理

5. 環境管理

  • 基準header, 類似JSON的寫法{"Authorization":"${token}"}欲使用token,當token變數存在的時候會自動給其替換,其他介面(在token提取介面之後的)將被自動使用, 其具體效果見報告詳細, 變數知識(見用例模組)
  • 當然也可以使用自定義函式來解決下面的問題

6. 介面管理

  • RESTful規範

    也實用一般的http/https(帶證照暫未測試,應該不支援)介面

    路徑可以使用自定義函式引數變數

  • GraphQL規範

    目前個人公司專案接觸到,發現只能是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. 報告管理

  • 點選測試結果可篩選結果
  • 點選首行的箭頭展開檢視詳細

報告解讀

  1. 請求資訊: 顯示當前用例的請求前 VS 請求後的 資料處理

  2. 提取引數: 顯示當前用例的提取參數列達式

  3. 響應結果: 顯示當前用例的響應結果

  4. 斷言資訊:顯示當前用例的斷言內容

    $.meta ? {'msg': '登入成功', 'status': 200} 用例中書寫的預期結果內容

    {'msg': '登入成功', 'status': 200} == {'msg': '登入成功', 'status': 200} 處理後實際的預期結果內容

  5. 當前引數池:顯示當前用例執行之後的可用引數變數

  6. 異常資訊:顯示當前用例執行出現的異常資訊

    關於異常的種類分析還需要統計後,也許後面會更新在文件上,目前如果出現異常請仔細檢視請求資訊,和異常資訊等內容

7. 擴充套件指令碼

gZWbC9.png

每次編輯之後,需要儲存才會生效,此處的函式僅能作用於 介面path,用例請求引數、預期結果中,不支援除錯

8. Json校驗

提供了實時的json格式校驗

參考資料

最後

  1. 感謝在此過程中我查過的所有資料的作者,提供答案的網友
  2. 該專案作為一個Demo,任有很多Bug和冗餘程式碼可以優化
  3. 如果你有什麼建議或者Bug反饋可以在原始碼倉庫進行反饋
  4. 如果你也想加入這個專案可以直接申請成為倉庫成員
  5. 如果你需要及時得到問題回覆可以加入該QQ群851163511
  6. 如果你覺得這個專案有點用處,有幫助到你,還請點個star
  7. 視訊過程

相關文章