目前在開發通用接口平臺,已經完成參數引擎,內置函數引擎,執行引擎,API抽離等工做,忽然發現了httprunner這個優秀的開源APItest框架,初步研究發現httprunner各方面都很優秀,遂進一步考慮是否將通用接口平臺執行後臺遷移至httprunner,通過多日的研究我發現了一個很不友好的地方。git
根據文章《HttpRunner 的測試用例分層機制》,文中介紹用例分層,API抽離其中有句話是這樣說的:「API接口定義必須放置在 api
目錄下」,這樣的話若是咱們web的數據存儲在MySQL中的話,沒法實現這一點,那麼在調用API就會提示報錯未知定義的API,若是數據存儲在yaml文件中,並應用httprunner的腳手架機制生產相應的目錄結構,那麼這樣的web化根本是無用的,只適合一我的本身玩,根本不具備web化的意義(共享便是正義)。github
基於這點,我放棄遷移web執行後臺至httprunner的想法,繼續自行開發批量執行及報告生成模塊。web
下面也分享一下我學習httprunner的所得吧。ajax
一、安裝json
windows安裝方法,直接pip安裝;也能夠去github下載壓縮包解壓後源碼安裝,很少說了windows
二、知識介紹api
在httprunner中,測試用例引擎最大的特點就是支持 YAML/JSON
格式的用例描述形式,也就是說你能夠用編輯YAML的方式來編寫接口自動化腳本,以下代碼網絡
文件名稱:xxxx.ymlapp
- 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,就醬紫吧。