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