用Python開發自動化測試指令碼

發表於2016-01-05

通常對於一個稍具規模的系統,一些新的改動勢必會帶來一些額外的功能迴歸測試工作,而這個工作是非常繁雜的,人肉的方式一次又一次的重複將會非常的枯燥乏味。

而我們所希望的,是一種自動化迴歸指令碼的方式,可以重複性的迴歸現有功能,並給出迴歸測試報告。

Python的世界有一個開源框架Splinter,可以非常棒的模擬瀏覽器的行為(從某種意義上也可以說是人的訪問點選行為)。Splinter提供了豐富的API,可以獲取頁面的資訊,以判斷當前的行為所產生的結果

最簡單的例子

 

browser = Browser(‘firefox’) 模擬一個瀏覽器

browser.visit(‘http://waptest.taobao.com/login/login.htm’) 訪問指定URL

browser.fill(‘TPL_username’,’test_04’) 填充表單使用者名稱

browser.fill(‘TPL_password’,’taobao1234’) 填充表單密碼

browser.find_by_value(‘登入’).first.click()表單提交

 

執行程式碼,splinter會開啟你所指定的瀏覽器然後進行各種操作,像放電影一樣的根據你的程式碼邏輯在你面前一步一步執行。

 

舉個例子,現在我們要回歸登入功能,以前我們從未開發過這樣的指令碼,所以現在我們首先要開發一個用於模擬登入行為的指令碼。

如下面程式碼(其實是非常簡短的一個程式碼):

 

從這幾句我們可以看到,我們大致要測試的幾種登入情況:

testLogin(‘測試未輸入使用者名稱’,”,”,’請輸入會員名’)

testLogin(‘測試未輸入密碼’,’qd_test_001′,”,’請輸入密碼’)

testLogin(‘測試帳戶不存在’,’這是一個不存在的名字哦’,’xxxxxxx’,’該賬戶名不存在’)

testLogin(‘測試成功登入’,’qd_test_001′,’taobao1234′,’繼續登入前操作’)

 

跑一下指令碼,可以得到結果:

————————————————————————–

測試頁面:使用者登入 – 手機淘寶網

測試未輸入使用者名稱

pass

————————–

測試未輸入密碼

pass

————————–

測試帳戶不存在

pass

————————–

測試成功登入

pass

————————–

測試[找回密碼]連結

pass

————————————————————————-

 

這裡的輸出是我們程式碼控制的,你也可以將結果儲存到檔案中傳送到某個監控系統或者郵箱。

 

首次開發完自動化迴歸指令碼後,以後的功能調整,我們就不再需要人肉去操作,跑一下指令碼,就可以得到結果。

 

附:

Splinter 快速介紹

官方網站:http://splinter.cobrateam.info/

官方介紹:

Splinter is an open source tool for testingweb applications using Python. It lets you automate browser actions, such asvisiting URLs and interacting with their items

 

特性:

1、  可以模擬瀏覽器行為,訪問指定的URL,並且可以指定不同的瀏覽器型別。比如firefox或者chrome等。不同的瀏覽器只要在本地安裝對應的驅動,就可以在程式碼中通過名稱指定來訪問。

2、  支援cookie操作,可以很方便的新增和刪除cookie;

3、  支援模擬滑鼠的動作,比如滑動到某個按鈕上,焦點離開某個按鈕等等,對於帶有動態提示的頁面,如搜尋引擎的關鍵字輸入框的動態提示,可以非常方便的測試。

4、  支援模擬鍵盤的輸入操作,對input等控制元件的輸入可以模擬使用者的type過程。

5、  支援直接執行js或者呼叫頁面的js。

6、  支援模擬上傳檔案。

7、  對radio和checkbox有專門的api支援,非常方便;

8、  支援快速的獲取頁面的元素或者判斷是否存在文字,用於開發判斷頁面提示資訊是否準確非常方便。

9、  最重要的,splinter的API非常簡單,配合官方的文件學習成本幾乎是0,當然你得懂一些python語法。如果你比較瞭解js和css,你可能會像喜歡jquery一樣喜歡它;

 

功能:

Splinter執行的時候會自動開啟你指定的瀏覽器,訪問指定的URL。

然後你所開發的模擬的任何行為,都會自動完成,你只需要坐在電腦面前,像看電影一樣看著螢幕上各種動作自動完成然後收集結果即可。

相關文章