如何優雅地使用httprunner測試框架進行接口測試?收藏
先來個小故事:
一天,你的領導丟給你幾十個接口,然后希望你輸出報告。你:"exm?",改改改。于是你引入了unittest單元測試框架、HTMLTestRunner等等。
正打算將各個測試用例分類重新規整,你領導又來了。如果世界上有真愛這種東西存在的話,那你領導對你的愛便是了。
"我又從開發那里幫你要了100個接口過來測,開不開心?"
"你的腳本給我看下,這個是啥意思?可以在我那邊運行嗎?"
"你的腳本怎么這么多啊,好亂啊"
"這個接口我要做性能測試,還有這個、這個……"
"這幾個接口是串聯起來的,你處理下"
你幾近崩潰,為什么,為什么不能簡單點。
……
幸好,你并沒有放棄,你在某個機緣巧合下發現了一個叫httprunner的測試框架,這個框架使用的是yaml格式的文本來描述腳本,只需一行命令即可進行接口測試。在連夜研究完這個框架后,你發出慨然長嘆:"原來接口測試可以這么優雅地寫啊!"
于是你將幾百個接口丟進一個yaml文本里,執行了下面這條命令:
hrun api.yaml
刷刷刷,搞定,大家都吃驚地看著你,似乎在看一頭變帥的豬
"這次咋這么快?平時光調試都得一兩天。"
"測試報告不錯!"
"數據也都校驗了。"
"咦,這腳本簡單,我都看得懂,可以可以,很強勢!"
…
so,引入我們今天的主題,如何使用httprunner的呢?
這里是正文嘍:
說說我的經歷吧,我學習Httprunner也有一段時間了,爬的坑一個接著一個,今天來做個總結吧~ 也希望有其他的小伙伴把你入的坑一起分享下。
從一開始以為不就一個框架嘛,有什么難的,不就方法調用么!再然后,天哪!怎么寫?沒有思路,最后,哦~好像知道怎么寫了,不知道你們在學一個新框架的時候是不是這樣的。
好了,話不多說,開始瘋狂地吐槽吧~
一、代碼格式要注意!
場景:我在編寫testcase的時候,可能下一級沒有空四格,然后就一直報錯,但是也找不到在哪里?
所以,注意代碼格式,層級關系空4個字符

二、沒有錯誤提示,下手慢點!
場景:一個很尷尬的案例,我把variables寫成了varibales,然后我下一個case還是直接復制,運行時一直提示'XXX is not found',當時就想,難道是我方法寫錯啦?結果,找了一下午這么低級的錯誤。看來要把自己關小黑屋好好反思了。因為htr的yaml文件沒有錯誤提示,所以要確保每個單詞都是對的。

三、文件名別搞錯啦!
相信有很多小伙伴是通過抓包工具下的文件,很多時候會改成yml的格式,所以在運行的時候,千萬注意了,找不到文件的時候往往就是文件名出錯了。
四、調用方法不知道哪里了!
在寫層級關系的時候,經常會用到debugtalk.py的方法,然而httprunner的錯誤提示不是很友好,往往找一個錯誤要找好久,然后問了領導,可以在每一個方法面加上pdb.set_trace方法,每次調用這個方法的時候,鍵盤輸入n,就可以一步步調試了。

五、循環操作怎么搞?
當我要多次添加數據或者多次刪除數據的時候,不知道怎么重復操作,找了很多資料后發現了一個方法可以在testsuites添加parameters,每一個返回值就可以實現一次testcase的執行,并且csv參數化也能實現。看了官方文檔說是數據驅動的思想還有,parameters一定要寫在testsuites中,寫在testcases是沒有用的,不會生效。



六、原來拼接路徑是這樣的
在我印象中路徑的匹配應該是這樣寫的:$url+$parmas,但是這樣寫的話你的路徑就是這樣的:'http://url+params',你的路徑就是不對的,怎么能請求接口成功呢?
所以正確是這樣的:

最后,httprunner作為一個自動化測試框架還是很強大的,還支持Locust性能測試,還在不斷地采坑實踐中,分享下我目前的坑,給大家排個雷。