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會彈出如下測試日志和測試報告,如下圖測試日志所示:
測試報告: