python+selenium基于po模式的web自動化測試框架

一、什么是Selenium?

Selenium是一個基于瀏覽器的自動化測試工具怀酷,它提供了一種跨平臺、跨瀏覽器的端到端的web自動化解決方案嗜闻。Selenium主要包括三部分:Selenium IDE蜕依、Selenium WebDriver 和Selenium Grid。

Selenium IDE:Firefox的一個擴展琉雳,它可以進行錄制回放样眠,并把錄制的操作以多種語言(例如java、python等)的形式導(dǎo)出成測試用例翠肘。

Selenium WebDriver:提供Web自動化所需的API檐束,主要用作瀏覽器控制、頁面元素選擇和調(diào)試束倍。不同的瀏覽器需要不同的WebDriver被丧。

Selenium Grid:提供了在不同機器的不同瀏覽器上運行selenium測試的能力。

本文將詳細介紹如何運用Python結(jié)合Selenium WebDriver庫搭建web自動化測試框架绪妹。

二甥桂、自動化測試框架

一個典型的自動化測試框架一般包括用例管理模塊、自動化執(zhí)行控制器邮旷、報表生成模塊和log模塊黄选,這些模塊相輔相成。

接下來介紹各模塊的邏輯單元:

1廊移、用例管理模塊

用例管理模塊包括新增糕簿、修改、刪除等操作單元狡孔,這些單元又會涉及到用例書寫模式,測試數(shù)據(jù)庫的管理蜂嗽、可復(fù)用庫等苗膝。

2、自動化控制器

控制器是自動化用例執(zhí)行的組織模塊植旧,主要是負責以什么方法執(zhí)行我們的測試用例.

3辱揭、報表生成模塊

主要負責執(zhí)行用例后的生成報告,一般以HTML格式居多病附,信息主要是用例執(zhí)行情況问窃。另外還可以配置發(fā)送郵件功能。

4完沪、log模塊

主要用來記錄用例執(zhí)行情況域庇,以便于高效的調(diào)查用例失敗信息以及追蹤用例執(zhí)行情況嵌戈。

三、自動化框架的設(shè)計和實現(xiàn)

1听皿、需求分析

首先我們的測試對象是一個web平臺熟呛,基于此平臺設(shè)計的框架要包含測試用例管理、測試執(zhí)行控制器尉姨、測試報告以及測試日志的生成庵朝。

2、設(shè)計和實現(xiàn)

頁面管理

假設(shè)測試web對象為一個典型單頁面應(yīng)用又厉,所以我們采用頁面模式九府。頁面模式是頁面與測試用例之間的紐帶,它將每個頁面抽象成一個單獨的類覆致,為測試用例提供頁面元素的定位和操作侄旬。

BaseClass作為父類只包含driver成員變量,用來標識Selenium中的WebDriver篷朵,以便在子類中定位頁面元素勾怒。LoginClass和PageClass作為子類,可以提供頁面元素的定位和操作方法声旺。比如登錄頁面笔链。

如果你對軟件測試、接口測試腮猖、自動化測試鉴扫、面試經(jīng)驗交流感興趣歡迎加入:軟件測試技術(shù)群:603401995,群里的免費資料都是筆者十多年測試生涯的精華澈缺。還有同行大神一起交流技術(shù)哦坪创。

從頁面看,需要操作的元素分別為:登錄用戶名姐赡、密碼莱预、下次自動登錄和登錄按鈕。具體實現(xiàn)代碼如下:

頁面父類BaseClass.py

LoginClass繼承自BaseClass,并進行登錄的元素定位以及操作實現(xiàn)项滑。代碼中定位了username和password依沮,并添加了設(shè)置用戶名和密碼的操作。

公共庫模塊

公共庫模塊是為創(chuàng)建測試用例服務(wù)的枪狂,主要包括常量危喉、公共函數(shù)、日志州疾、報告等辜限。

Common.py

測試用例信息類用來標識測試用例,并且包括執(zhí)行用例严蓖、執(zhí)行結(jié)果信息薄嫡,主要包括以下字段氧急。

日志主要用來記錄測試用例執(zhí)行步驟及產(chǎn)生的錯誤信息,不同的信息有不同的日志級別岂座,比如Information态蒂、Warning、Critical和Debug费什。由于每個測試用例產(chǎn)生的日志條目比較少钾恢,所以在測試框架中只利用了最高級別的日志打印,即Debug級別鸳址,該級別也會將其他所有的日志級別的信息同樣打印出來瘩蚪。在具體的實現(xiàn)中引用了Python標準庫中的logging類庫,以便更方便的控制日志輸出稿黍。

測試用例倉庫

用例倉庫主要用來組織自動化測試用例疹瘦。每條測試用例都被抽象成一個獨立的類,并且均繼承自unittest.TestCase類巡球。 Python中的unittest庫提供了豐富的測試框架支持言沐,包括測試用例的setUp和tearDown方法,在實現(xiàn)用例的過程中可以重寫酣栈。依托頁面管理和公共庫模塊實現(xiàn)的頁面方法和公共函數(shù)险胰,每一個測試用例腳本的書寫都會非常清晰簡潔。

從這個測試用例中矿筝,我們可以看到

Setup中定義了執(zhí)行測試用例前的一些實例化工作

tearDown對執(zhí)行完測試做了清理和寫日志文件工作

測試步驟起便、測試數(shù)據(jù)和測試檢查點非常清晰,易修改(比如用戶名密碼)

日志級別僅有Debug窖维,所以寫日志僅需用同一Log方法

3榆综、用例執(zhí)行模塊

執(zhí)行模塊主要用來控制測試用例腳本的批量執(zhí)行,形成一個測試集铸史。用例的執(zhí)行引用了Python標準庫中的subprocess來執(zhí)行nosetests的shell命令鼻疮,從而執(zhí)行給定測試用例集中的用例。測試用例集是一個簡單的純文本文件琳轿,實現(xiàn)過程中利用了.txt文件testcases.txt陋守。

用例前沒有“#“標記的測試用例腳本會被執(zhí)行,而有”#“標記的則會被忽略利赋,這樣可以很方便的控制測試集的執(zhí)行,當然也可以創(chuàng)建不同的文件來執(zhí)行不同的測試集猩系。

四媚送、需要改進的模塊

對于現(xiàn)有實現(xiàn)的測試框架,已經(jīng)可以滿足web對象的自動化需求寇甸,但還是有些可以改進提高的地方塘偎,比如:

部分用例可以嘗試數(shù)據(jù)驅(qū)動疗涉。

二次封裝selenium的By函數(shù),以便更高效定位元素吟秩。

沒有進行持續(xù)化集成咱扣。

五、總結(jié)

基于Selenium實現(xiàn)的web自動化測試框架不僅輕量級而且靈活涵防,可以快速地開發(fā)自動化測試用例闹伪,結(jié)合本篇的框架設(shè)計和一些好的實踐,希望對大家以后的web自動化框架的設(shè)計和實現(xiàn)有所幫助壮池。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末偏瓤,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子椰憋,更是在濱河造成了極大的恐慌厅克,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件橙依,死亡現(xiàn)場離奇詭異证舟,居然都是意外死亡,警方通過查閱死者的電腦和手機窗骑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進店門女责,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人慧域,你說我怎么就攤上這事鲤竹。” “怎么了昔榴?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵辛藻,是天一觀的道長。 經(jīng)常有香客問我互订,道長吱肌,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任仰禽,我火速辦了婚禮氮墨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘吐葵。我一直安慰自己规揪,他們只是感情好,可當我...
    茶點故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布温峭。 她就那樣靜靜地躺著猛铅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪凤藏。 梳的紋絲不亂的頭發(fā)上奸忽,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天堕伪,我揣著相機與錄音,去河邊找鬼栗菜。 笑死欠雌,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的疙筹。 我是一名探鬼主播富俄,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼腌歉!你這毒婦竟也來了蛙酪?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤翘盖,失蹤者是張志新(化名)和其女友劉穎桂塞,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體馍驯,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡阁危,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了汰瘫。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片狂打。...
    茶點故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖混弥,靈堂內(nèi)的尸體忽然破棺而出趴乡,到底是詐尸還是另有隱情,我是刑警寧澤蝗拿,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布晾捏,位于F島的核電站,受9級特大地震影響哀托,放射性物質(zhì)發(fā)生泄漏惦辛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一仓手、第九天 我趴在偏房一處隱蔽的房頂上張望胖齐。 院中可真熱鬧,春花似錦嗽冒、人聲如沸呀伙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽区匠。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間驰弄,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工速客, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留戚篙,地道東北人。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓溺职,卻偏偏與公主長得像岔擂,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子浪耘,可洞房花燭夜當晚...
    茶點故事閱讀 43,728評論 2 351