目前在開發通用接口平台,已經完成參數引擎,內置函數引擎,執行引擎,API抽離等工作,突然發現了httprunner這個優秀的開源APItest框架,初步研究發現httprunner各方面都很優秀,遂進一步考慮是否將通用接口平台執行后台遷移至httprunner,經過多日的研究我發現了一個很不友好的地方。
根據文章《HttpRunner 的測試用例分層機制》,文中介紹用例分層,API抽離其中有句話是這樣說的:“API接口定義必須放置在 api 目錄下”,這樣的話如果我們web的數據存儲在MySQL中的話,無法實現這一點,那么在調用API就會提示報錯未知定義的API,如果數據存儲在yaml文件中,並應用httprunner的腳手架機制生產相應的目錄結構,那么這樣的web化根本是無用的,只適合一個人自己玩,根本不具有web化的意義(共享即是正義)。
基於這點,我放棄遷移web執行后台至httprunner的想法,繼續自行開發批量執行及報告生成模塊。
下面也分享一下我學習httprunner的所得吧。
1、安裝
windows安裝方法,直接pip安裝;也可以去github下載壓縮包解壓后源碼安裝,不多說了
2、知識介紹
在httprunner中,測試用例引擎最大的特色就是支持 YAML/JSON 格式的用例描述形式,也就是說你可以用編輯YAML的方式來編寫接口自動化腳本,如下代碼
文件名稱:xxxx.yml
- config: name: demo variable_binds: - UserName: test001 - Password: 123456 request: base_url: http://xxx.debugtalk.com headers: Accept: application/json User-Agent: iOS/10.3 - test: name: regist user which passwd is wrong request: url: http://m.aicai.com/m/saveSimpleRegister.do?agentId=14759&vt=5 method: POST headers: User-Agent: 'iOS/10.3' token: content.token json: account: "postsay1" password: "%^&*()" phone: "13751077575" isProtocol: on ajaxReq: 1 validate: - {"check": "status_code", "comparator": "eq", "expect": 200} - {"check": "content.status", "comparator": "eq", "expect": error} - {"check": "content.msg", "comparator": "str_eq", "expect": xlkhslhdfklsdlfh} - eq: ["status_code" , 200] - eq: ["content.status" , error] - eq: ["content.msg" ,xhixvjkdjfljsdf]
代碼釋義:config 為當前case的配置項標志,從代碼中也可以看到,可以包括參數等信息;
test為API標志,包含API信息以及斷言信息
ps:不懂YAML的童鞋請自行學習其他資料
執行時在yml文件夾所在目錄的cmd中輸入 httprunner xxxx.yml 即可。

可以看到執行結束,有報告生成,如下圖

這樣就完成了一個簡單接口自動化腳本的編寫和執行以及報告的生成,極大的簡化了接口自動化的難度,你無需接觸Python requests unittest 等代碼,事實上httprunner的底層就是那些東西,用約定格式的YAML文件傳入數據,httprunner在底層處理數據,發送請求,校驗對比結果,生成報告,就醬子。
其他呢,httprunner還提供了腳手架機制,一鍵生成httprunner的項目結構,提供抽離API機制 等等,到我發現無法web化后,遂放棄,因為老夫也會寫網絡爬蟲喲,還是自己寫后台吧。
如果你想使用httprunner做接口自動化,建議去看說明文檔,ok,就醬紫吧。
