天池神器讓你的自動化測試腳本不再掉鏈子
在自動化測試過程中,常常讓測試人員頭疼的就是自動化測試腳本不能長期穩定的運行;總是出現各種意想不到錯誤導致測試的中斷;長此以往,不僅影響測試的效率和準確性,也深深的影響著測試人員對自動化測試的信心。
在維護產品拷機代碼時,拷機過程中有大量升級重啟操作,腳本中就要不斷的等待判斷是否可進行下一步的操作,其中不同的操作,等待的時間不同,如果每一次等待都按照atom設備型號的標準,想想浪費大把的時間真是罪過呀。今天我們就以等待系統重啟的例子來說明如何改善代碼的穩定性,讓你的腳本不再掉鏈子。
首先看一下下面這兩段代碼中等待頁面響應的方法:
相信大家都會遇到上面例子中的問題,測試腳本總是因為等待時間不夠長而屢次中斷,通常情況,都會找一個最長的時間去等待,但即便是設置最長的時間,一旦網絡比預想的多一秒的延遲,依然會導致測試的中斷。那看下面用while循環,這樣是不是就能夠適應動態的等待時間。
但是問題又來了,對于測試腳本來講,大部分都是在等待系統的各種響應,如果都按照這種方法,再看一下自己的腳本遍地都是while判斷,每次都要循環,一不留神還死循環了;整個流程都被淹沒在while中了;不爽啊。那我們就在繼續封裝一下了,哈哈,天池神器:wait_until wait_until_not 就問世了。
wait_until:等待你的目標出現
wait_until_not:等待你的目標消失
主要分為三個部分:等待(wait) 目標(method) 出現(until)/消失(until_not)
考慮到這段代碼所有的測試人員都可以直接使用,就直接把代碼貼出來,供大家參考;下面就直接看代碼好了。
Wait說明
Wait類可以設置最長等待時間(timeout),刷新時間間隔(poll_frequency),可忽略的異常值(ignored_exceptions)。
前兩個都不用解釋了,就簡單介紹一下 ignored_exceptions這個值,主要是在目標的檢測過程可能發生各種異常,有些異常并不影響繼續等待,就可以在這個值里面設置。當然wait方法被封裝成類的形式,主要是天池的需要,大家可根據自己的需要進行簡化。
util就是等待目標(method)的出現,直到timeout退出;**kwargs參數主要是目標(method)需要的一些參數擴展。
util_not就是等待目標(method)的消失,直到timeout退出;**kwargs參數主要是目標(method)需要的一些參數擴展。
通過以上封裝,將第一節的while 循環瞬間就變成一個until函數。
首次嘗試一下wait類吧,看! 好幾行的代碼是不是就變成下面一行就搞定了,你隨便等吧。不過到底等什么呢,請看下節的method方法
目標(method)說明
就拿例子中的url_is_connectable舉例吧,url_is_connectable類主要是判斷url是否可訪問;頁面可響應后就可以進行下一步的操作了。當然,封裝成類,并且內容在call函數中實現也是天池的需要,大家可根據自己的需要簡化為函數都是可以的;函數的實現使用urllib庫來判斷當然大家也可以用其他方法。
結束
看了Wait和url_is_connectable這兩個類,是不是一下子就清晰明了了,有了wait以后你就只需要關心你要等的目標就可以了。不過大家一定要注意死循環哦,我都已經掉進去兩次了。當然,上面url_is_connectable方法只是一個例子,不過wait類是通用的,大家可以用起來。
本文就是拋磚引玉,希望能和大家在自動化測試代碼的健壯性上面有更多的交流;讓我們的自動化測試道路走的更遠一些。