起因
- 工作中遇到期望做接口自動化,之前公司跟著團隊做過python+request搭建的自動化框架,逐步完善框架本身,與接口測試用例本身,都是需要代碼編寫能力較強,能保證框架本身沒問題,也要保證接口用例本身沒問題。
- 領(lǐng)導(dǎo)期望接口自動化能做到閉環(huán),從代碼產(chǎn)生開始到接口測試結(jié)果結(jié)束,都可以圈入一個閉環(huán)。
- 沒有足夠的代碼能力,去維護一個全新的框架或工具,只能在現(xiàn)有工具的功能上做相應(yīng)的優(yōu)化與耦合。
工具準備與環(huán)境前提
- 當(dāng)前公司現(xiàn)有工具流程已集成:
- 代碼gitlab管理;
- 后端服務(wù)集成rancher管理;
- 客戶端代碼通過jenkins構(gòu)建打包;
- 接口文檔完善,通過IDEA插件自動導(dǎo)入到y(tǒng)api管理,yapi可做接口自動化,接口變更時,測試集合也會自動更新;
- 團隊使用飛書,創(chuàng)建了群組后有群組機器人概念,可用作接口測試結(jié)果通知。
- 以上平臺和工具有相應(yīng)權(quán)限的賬號
解決的問題
- yapi接口測試:參考官方文檔:插件安裝、登錄后配置全局token、服務(wù)端測試、斷言;
- 飛書機器人:參考官方文檔:創(chuàng)建機器人、postman組裝調(diào)用機器人模擬發(fā)消息的post請求接口、從postman獲得相應(yīng)的curl;
- Jenkins:配置構(gòu)建執(zhí)行curl、拿到自己賬號的token;
- gitlab:web hook 功能,配置觸發(fā)條件下,執(zhí)行某post類型的請求接口;yapi服務(wù)端測試的URL是get類型,不能直接放到web hook里;飛書機器人的接口是post,但是web hook里無法添加傳參,所以也無法直接添加進去web hook;Jenkins某項目配置構(gòu)建,拿到賬號A:token后,可組裝post請求的接口,可直接放到web hook,模擬賬號A手動點了立即構(gòu)建的操作。
- 綜上,可實現(xiàn)在gitlab代碼有變動時,觸發(fā)jenkins對應(yīng)項目自動構(gòu)建,構(gòu)建通過shell方式,執(zhí)行相應(yīng)腳本,完成請求yapi接口測試-服務(wù)端測試的curl,并請求飛書機器人發(fā)送相關(guān)信息到群組的curl
待解決的問題
- yapi新增測試集合時,自動同步到Jenkins構(gòu)建執(zhí)行的腳本里
- yapi測試集合里編寫斷言時,部分判斷條件無法滿足等。
正文
參考資料
飛書官方文檔:機器人操作使用
yapi官方文檔:接口自動化測試
yapi配置token:
先登錄獲取token,設(shè)置傳參
storage的使用
gitlab配置web hook :Gitlab 利用 Webhook+jenkins 實現(xiàn)自動構(gòu)建與部署
jenkins配置構(gòu)建執(zhí)行:Yapi在Jenkins中配置服務(wù)端測試