Robot Framework測試框架用例指令碼設計方法
Robot Framework介紹
Robot Framework是一個通用的關鍵字驅動自動化測試框架。測試用例以HTML,純文字或TSV(製表符分隔的一系列值)檔案儲存。通過測試庫中實現的關鍵字驅動被測軟體。 Robot Framework靈活且易於擴充套件。它非常適合測試有不同介面的複雜軟體:使用者介面、命令列,Web服務,專有的程式設計介面等。
Robot Framework是開源軟體,通用的測試庫原始碼安裝包和文件等可通過http://robotframework.org獲取。Robot Framework 是一種通用的,應用和技術相互獨立的框架。
當我們想要完成 不同型別測試時,只需安裝不同的擴充套件庫即可,框架提供了非常豐富的Library。
- Web自動化測試:SeleniumLibrary、Selenium2Library、Selenium2Library for Java等。
- Windows GuiI測試:AutoItLibrary
- 移動測試:Android library、ios library、AppiumLibrary等
- 資料庫測試:Database Library(Java)、Database Library(Python)、MongoDB library等。
- 檔案對比測試:Diff Library
- HTTP測試:HTTP library(livetest)、HTTP library(Requests)等。
如下圖所示的模組化結構:
測試資料以一種簡單易於編輯的表格格式。當 Robot Framework 啟動的時候,啟動測試資料,執行測試用例,並且生成日誌和報告。核心框架控制代碼與被測系統通過測試庫進行互動。測試庫能夠直接使用應用程式介面或者使用更低層次的測試工具作為驅動。
Robot Framework框架環境搭建
目前Robot Framework支援wxpython3.x及python3.x版本,本文針對wxpython2.x版本及python2.7版本部署。
Robot Framework框架所需軟體包清單如下:
1、python:【ActivePython-2.7.8.10-win32-x86.msi】
推薦使用ActivePython,這個版本PATH已經配好了。
http://www.activestate.com/activepython/downloads 【建議下載python2.7的x86版本】
驗證安裝是否成功:
進入cmd視窗命令下,輸入python是否能進入python編輯器。
2、wxPython 【wxPython2.8-win32-unicode-2.8.12.1-py27】
http://sourceforge.net/projects/wxpython/files/wxPython/2.8.12.1/
【建議下載支援py2.7的unicode版本,否則不相容robot的ride】
安裝按預設方法進行即可。
3、Robot framework 【robotframework-2.8.7.tar.gz】
https://pypi.python.org/pypi/robotframework/2.8.7
先解壓後,執行python setup.py install安裝
4、Robot framework-ride 【robotframework-ride-1.4.tar.gz】
https://pypi.python.org/pypi/robotframework-ride
先解壓後,執行python setup.py install安裝
【備註】:目前1.4版本暫時沒有exe二進位制安裝包,如果選擇ride-1.3版本,是有exe的安裝包,此包安裝完後會在桌面生成應用程式圖示,執行RIDE平臺方便些。
5、Robot framework-selenium2library:【robotframework-selenium2library-1.7.1.zip】
【web方向的擴充套件測試庫】——可自選安裝。
https://pypi.python.org/pypi/robotframework-selenium2library
或者:http://robotframework.org 獲取下載。
RF-seleniumlibrary 可以看做RF版的selenium 庫,selenium (webdriver)是一套基於web的規範(API),所以可以基於這套API進行頁面的定位與操作。
注意:如需要安裝第三方selenium2library測試庫,先按順序安裝依賴庫包,如下:
1、Decorator 【decorator-3.4.2】
2、Selenium 【selenium-2.46.0】
3、Docutils 【docutils-0.12】
以上依賴庫包,可從https://pypi.python.org/pypi
4、selenium2library 【robotframework-selenium2library-1.7.1.zip】
下載後,執行python setup.py install安裝完後,進入C:\Python27\Lib\site-packages\robotframework_selenium2library-1.7.1-py2.7.egg\EGG-INFO\requires.txt檢視是否已有安裝所需的庫包,如下:
decorator >= 3.3.2
selenium >= 2.32.0
robotframework >= 2.6.0
docutils >= 0.8.1
以上庫包都已有安裝好,後面數字說明需要大於等於版本號的庫包。
驗證robot安裝是否成功,如:pybot --version
到這裡為止,框架已安裝好,可在C:\Python27\Lib\site-packages\robot\libraries看到自帶的標準測試庫,是隨Robot Framework 一起釋出的,這些庫被叫做標準庫,以下是一些可用的標準庫:
1、Builtln
2、OperatingSystem
3、Telnet
4、Collections
5、String
6、Dialogs
7、Screenshot
8、Remote
9、XML
10、Reserved
11、Process
12、DateTime
Robot的實際測試能力是由測試庫提供的,不同的測試庫提供了功能各異的庫關鍵字,以滿足不同的用例需求。
其它方面的測試庫可從http://robotframework.org/#test-libraries獲取,如果根據公司內部需求實現自動化檢測被測產品,有些第三方開源的測試庫無法滿足達到被測產品自動化,需要自行定製擴充套件測試庫開發。
總體上開源的測試框架有提供開放的原始碼,可以自行整合框架梳理原始碼目錄結構形成獨立的工具包。
如果需要使用Java開發擴充套件測試類庫,需要安裝Jython
1)安裝JDK1.6
2) 安裝Jython http://www.jython.org/downloads.html 【選擇2.5以上版本】
進入命令列模式下,進入下載好的jar包目錄下執行指令:
java -jar jython_installer-2.5.2jar
驗證安裝是否成功:
jybot --version
進入C:\Python27\Scripts執行ride.py檔案,可彈出平臺介面,如下:
可支援瀏覽器分別為:IE、firefox、chrome、Opera
其中如果要支援執行IE和chrome瀏覽器,還需要下載驅動檔案來支援。
如:chromedriver.exe和IEDriverServer.exe
將chromedriver.exe和IEDriverServer.exe放在C:\Python27或者C:\Python27\Scripts目錄下(因為這兩個目錄已經新增到系統環境變數裡面了)
火狐不需要裝driverserver;指令碼中瀏覽器引數不填寫時預設為火狐。接下來在IE瀏覽器還需要去掉安全選項的勾選,如下圖所示:
Robot Framework框架用例指令碼設計方法
Robot Framework框架中,一般將測試層分為三層:Test Project、TestSuit、Test Case。本文按照三層總結以往工作用到的常見的關鍵字驅動和資料驅動用例指令碼分層設計。
一、關鍵字驅動
關鍵字驅動:關鍵字以及相關引數構成,最常用的一種模式。測試用例可以描述成各種的業務工作流,這樣的工作流可以用關鍵字驅動或者行為驅動方式來編寫。
如下圖所示,採用測試用例模組化設計,OS是一級模組,Test是二級模組,在Test二模組下設定測試用例Run,Resources_valable.html作為OS模組的公有資源變數;登入也可作為獨立模組,登入模組下有兩個用測試用例;Resources目錄作為全域性的公有資原始檔,該資原始檔下有全域性資原始檔和全域性資源變數檔案,這些全域性資原始檔能提供給所有模組用例呼叫介面。
舉例:
首先,要給Test二級模組載入測試庫和資原始檔,這樣方便測試指令碼能呼叫測試庫的關鍵字以及變數引數傳遞。如果不載入的話,執行會失敗,測試指令碼的關鍵字會變黑色字型,載入後,輸入的測試指令碼關鍵字才會變為藍色字型。
在Resources_variable.html檔案建立變數,如下圖所示:
指令碼設計1:
關鍵字:Should Exist
來源:OperatingSystem <測試庫>
引數:[ path | msg=None ]
功能描述:如果引數給出的路徑或檔案不存在,則關鍵字執行失敗
引數: path:可以是一個確切的路徑或檔案,也可以是匹配型別,型別說明詳見Grep File關鍵字;
msg:支援使用者重寫報錯提示資訊,不配置即採用預設報錯資訊;
返回值:無
舉例:
在拆除輸入框錄入如下:
以上拆除所謂的作用是指令碼執行完成後,自動執行此關鍵字,一般用於結束。
測試用例Should Exist:指令碼如下:
滑鼠右擊5或6選擇comment表示註釋,加了註釋不會執行該行指令碼。
指令碼設計2:
比如測試介面功能,那就用到測試庫Selenium2Library,比如要知道登入介面的使用者名稱和密碼輸入框的元素屬性,需要藉助安裝火狐瀏覽器的外掛XPath和firebug來定位元素的屬性。
1、給登入模組載入測試庫和資原始檔,如下圖所示:
2、新增全域性變數,如下圖所示:
3、由於指令碼編寫會用到String、BuiltIn、Selenium2Library、OperatingSystem測試庫檔案的關鍵字及呼叫變數資原始檔,所以給資原始檔common_keywords.html載入變數檔案和String、BuiltIn、Selenium2Library、OperatingSystem測試庫檔案,載入資源變數檔案用於呼叫common_variable.html檔案。
4、在message_common檔案設定全域性變數:
會把common_keywords.html檔案的數值傳遞給message_common檔案自定義的變數儲存。
5、在common_keywords.html建立login使用者關鍵字通用的登入子模組,並設計指令碼和引數設定,如下圖所示:
由圖可知,引數是從全域性變數傳遞過來給指令碼呼叫。
6、用例舉例實現步驟首先登入平臺,然後進入選單“設定 ”介面上修改真實姓名和情感狀態、血型後點擊儲存等動作。
在測試用例“正常登入測試”,設定初始化變數如圖所示執行使用者關鍵字message_common,指令碼編寫第一行是呼叫公有資原始檔login子模組,然後進行一步操作。
可按快捷鍵F8執行測試,測試結果如下:
測試LOG日誌如下圖所示:
測試報告如下圖所示:
二、資料驅動
資料驅動方式用來編寫一些帶有輸入資料變數的工作流。用高級別的關鍵字—user keyword完成測試用例,隱藏了實際的測試工作流。用於測試執行步驟相同,輸入資料輸出結果不同的測試用例。例如常見的登入進行異常測試,需要用到不同的資料傳參。
舉例:
首先,要建立Resource_keywords_OS.html資原始檔,再給此檔案載入OperatingSystem <測試庫>,然後,在資原始檔下建立OS_Diff_file關鍵字檔案,如下圖所示:
在測試用例file,測試模板輸入OS_Diff_File(要對應資原始檔下的檔名),顏色變為藍色字型代表生效,否則不生效會找不到資原始檔,然後錄入共有四行資料。這四行資料指令碼會按每行資料引數值傳遞過去。
測試模板就是呼叫資原始檔OS_Diff_File使用者關鍵字,把模板資料傳遞給關鍵字定義的引數提供呼叫。
指令碼設計:
在使用者自定義的關鍵字OS_Diff_File的右框引數填入encode1\encode1\encode2\encode2共四個引數,這四個引數就是對應上述圖四行資料,然後在拆除框內輸入關鍵字代表待指令碼執行完後再執行刪除整個目錄檔案。
指令碼設計如下:
結果如下:
點選LOG或Report會彈出如下測試日誌和測試報告,如下圖測試日誌所示:
測試報告: