Python + Selenium結(jié)合 unittest 測試框架

如果你是學(xué)習(xí)網(wǎng)絡(luò)爬蟲然评,那么到這里就不用再繼續(xù)看了颖榜。如果你是做自動化測試惊科,那么接下來才是重點拍摇。

關(guān)于 unittest 框架的用法,請參考Python 測試框架馆截。

前面我們一直在講 Selenium 對各種操作的模擬充活,以及處理各種特殊頁面元素和結(jié)構(gòu)。雖然通過 assert 語句增加了一些預(yù)期結(jié)果與實際結(jié)果的判斷孙咪,但是并未形成真正的自動化測試框架堪唐。

通過對 unittest 框架的理解,已經(jīng)了解了 Python 中單元測試框架的用途翎蹈。雖然 unittest 是單元測試框架淮菠,依然可以用于自動化測試,UI 自動化測試與單元測試都是一種自動化測試荤堪。unittest 的主要內(nèi)容是如何編寫用例合陵、組織用例、運(yùn)行用例和運(yùn)用測試固件澄阳,所有的測試都基于這些框架基礎(chǔ)拥知。包括基于移動界面的自動化測試,以及基于接口層面的測試碎赢,都可以應(yīng)用這些測試框架低剔。

回顧一下 unittest 框架中的基本思想:

支持各種層面的自動化測試;
測試用例共享 setUp 初始化和 tearDown 清理代碼肮塞;
通過各種方式組織測試和規(guī)劃測試用例襟齿;
保持測試代碼與測試運(yùn)行之間的的獨立性。


那么如何使用 unittest 結(jié)合 Selenium 來實現(xiàn)自動化測試枕赵?

test fixture

在測試固件中的 setUp() 方法中加入瀏覽器初始化猜欺、配置初始化、數(shù)據(jù)庫連接等動作拷窜。

在 tearDown() 方法中退出瀏覽器开皿、還原配置涧黄、斷開數(shù)據(jù)庫連接等。

或者其他需要在測試過程中清理和初始化的動作赋荆。

test case

測試用例盡可能保持代碼和數(shù)據(jù)的獨立性笋妥,畢竟 UI 自動化測試步驟非常復(fù)雜,用例之間的依賴會因某一個用例的失敗而導(dǎo)致與之相關(guān)的用例全部失敗糠睡。

測試用例盡可能保持可獨立執(zhí)行狀態(tài)挽鞠,可任意根據(jù)需要執(zhí)行某個或者某類的測試用例。

UI 自動化測試因其受界面元素變化影響非常大狈孔,因此用例編寫盡量基于流程的測試信认,這也是 UI 自動化測試的意義所在。單個功能的測試用例過多均抽,大量的手工用例被自動化會導(dǎo)致自動化測試代碼的維護(hù)量非常之大嫁赏,這樣也是自動化測試失敗的根源。

盡量少或者不編寫關(guān)于導(dǎo)致流程失敗的逆向用例油挥,逆向用例可能性過多潦蝇。并且實際自動化測試的使用場景,是基于已完善的功能深寥,檢查其沒有被新功能修改所影響攘乒。正向用例的意義更大。

謹(jǐn)慎選擇加入自動化測試的手工用例惋鹅,但凡提自動化測試覆蓋度的團(tuán)隊则酝,自動化測試實施的失敗也就在三個月左右。一定要謹(jǐn)記闰集,用例越多維護(hù)成本就越高沽讹。所以用例選擇一定要選擇高頻率、高優(yōu)先級武鲁、非常重要的用例爽雄,有余力再逐次添加。

如果選擇的流程自動化測試實現(xiàn)難度較高沐鼠,建議推后自動化測試挚瘟。并非要實現(xiàn) 100% 自動化測試,所以先以較易入手的測試流程加入饲梭。先易后難乘盖,團(tuán)隊需要信心。

自動化測試排拷,特別是 UI 自動化測試成功率低侧漓,主要原因集中于環(huán)境問題锅尘、團(tuán)隊期望监氢、維護(hù)成本等布蔗。其實很多時候核心問題都集中在測試用例的選擇上。不要想一蹴而就浪腐,在找到適合當(dāng)前團(tuán)隊的自動化策略后纵揍,逐步提高自動化測試覆蓋度,才能讓自動化測試達(dá)到提高團(tuán)隊效率的作用议街。

test suite

通過 discover 加載和構(gòu)建測試套件泽谨,由于我們在編寫用例的時候有可獨立運(yùn)行的前提,所以不用在意用例的加載順序特漩,如果非要加載順序建議好好研究一下 discover 的查找規(guī)則吧雹。

通過用例的不同命名方式(如產(chǎn)品類的測試用例使用 *product*.py),跳過規(guī)則(如 skipIf涂身、skipUnless)等策略構(gòu)建不同的測試套件雄卷。以期達(dá)到在冒煙測試、BVT 測試蛤售、兼容性測試丁鹉、核心流程回歸、線上巡檢等應(yīng)用場景中都能快捷方便的選擇需要的測試套件悴能。

test runner

借助 HTMLTestRunner 或 Beautiful Report 等運(yùn)行測試套件并展示 html 格式的測試報告揣钦。

如果運(yùn)行速度過慢,可以引入多線程或者多進(jìn)程結(jié)合瀏覽器的無頭模式加快用例的運(yùn)行速度漠酿。

同時也可以將運(yùn)行代碼與持續(xù)集成結(jié)合冯凹。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市记靡,隨后出現(xiàn)的幾起案子谈竿,更是在濱河造成了極大的恐慌,老刑警劉巖摸吠,帶你破解...
    沈念sama閱讀 211,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件空凸,死亡現(xiàn)場離奇詭異,居然都是意外死亡寸痢,警方通過查閱死者的電腦和手機(jī)呀洲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來啼止,“玉大人道逗,你說我怎么就攤上這事∠追常” “怎么了滓窍?”我有些...
    開封第一講書人閱讀 157,435評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長巩那。 經(jīng)常有香客問我吏夯,道長此蜈,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,509評論 1 284
  • 正文 為了忘掉前任噪生,我火速辦了婚禮裆赵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘跺嗽。我一直安慰自己战授,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,611評論 6 386
  • 文/花漫 我一把揭開白布桨嫁。 她就那樣靜靜地躺著植兰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪璃吧。 梳的紋絲不亂的頭發(fā)上钉跷,一...
    開封第一講書人閱讀 49,837評論 1 290
  • 那天,我揣著相機(jī)與錄音肚逸,去河邊找鬼爷辙。 笑死,一個胖子當(dāng)著我的面吹牛朦促,可吹牛的內(nèi)容都是我干的膝晾。 我是一名探鬼主播,決...
    沈念sama閱讀 38,987評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼务冕,長吁一口氣:“原來是場噩夢啊……” “哼血当!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起禀忆,我...
    開封第一講書人閱讀 37,730評論 0 267
  • 序言:老撾萬榮一對情侶失蹤臊旭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后箩退,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體离熏,經(jīng)...
    沈念sama閱讀 44,194評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,525評論 2 327
  • 正文 我和宋清朗相戀三年戴涝,在試婚紗的時候發(fā)現(xiàn)自己被綠了滋戳。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,664評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡啥刻,死狀恐怖奸鸯,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情可帽,我是刑警寧澤娄涩,帶...
    沈念sama閱讀 34,334評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站映跟,受9級特大地震影響蓄拣,放射性物質(zhì)發(fā)生泄漏兜粘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,944評論 3 313
  • 文/蒙蒙 一弯蚜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧剃法,春花似錦碎捺、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至优构,卻和暖如春诵叁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背钦椭。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評論 1 266
  • 我被黑心中介騙來泰國打工拧额, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人彪腔。 一個月前我還...
    沈念sama閱讀 46,389評論 2 360
  • 正文 我出身青樓侥锦,卻偏偏與公主長得像,于是被迫代替她去往敵國和親德挣。 傳聞我的和親對象是個殘疾皇子恭垦,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,554評論 2 349

推薦閱讀更多精彩內(nèi)容