Robot Framework是一個通用的關鍵字驅動自動化測試框架。測試用例以HTML,純文本或TSV(製表符分隔的一系列值)文件存儲。經過測試庫中實現的關鍵字驅動被測軟件。 Robot Framework靈活且易於擴展。它很是適合測試有不一樣接口的複雜軟件:用戶接口、命令行,Web服務,專有的編程接口等。
Robot Framework是開源軟件,通用的測試庫源碼安裝包和文檔等可經過http://robotframework.org獲取。Robot Framework 是一種通用的,應用和技術相互獨立的框架。html
當咱們想要完成 不一樣類型測試時,只需安裝不一樣的擴展庫便可,框架提供了很是豐富的Library。java
以下圖所示的模塊化結構:python
測試數據以一種簡單易於編輯的表格格式。當 Robot Framework 啓動的時候,啓動測試數據,執行測試用例,而且生成日誌和報告。核心框架句柄與被測系統經過測試庫進行交互。測試庫可以直接使用應用程序接口或者使用更低層次的測試工具做爲驅動。ios
目前Robot Framework支持wxpython3.x及python3.x版本,本文針對wxpython2.x版本及python2.7版本部署。web
Robot Framework框架所需軟件包清單以下:chrome
1、python:【ActivePython-2.7.8.10-win32-x86.msi】數據庫
推薦使用ActivePython,這個版本PATH已經配好了。編程
http://www.activestate.com/activepython/downloads 【建議下載python2.7的x86版本】python3.x
驗證安裝是否成功:瀏覽器
進入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測試庫,先按順序安裝依賴庫包,以下:
一、Decorator 【decorator-3.4.2】
二、Selenium 【selenium-2.46.0】
三、Docutils 【docutils-0.12】
以上依賴庫包,可從https://pypi.python.org/pypi
四、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 一塊兒發佈的,這些庫被叫作標準庫,如下是一些可用的標準庫:
一、Builtln 二、OperatingSystem 三、Telnet 四、Collections 五、String 六、Dialogs 七、Screenshot 八、Remote 九、XML 十、Reserved 十一、Process 十二、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框架中,通常將測試層分爲三層:Test Project、TestSuit、Test Case。本文按照三層總結以往工做用到的常見的關鍵字驅動和數據驅動用例腳本分層設計。
1、關鍵字驅動
關鍵字驅動:關鍵字以及相關參數構成,最經常使用的一種模式。測試用例能夠描述成各類的業務工做流,這樣的工做流能夠用關鍵字驅動或者行爲驅動方式來編寫。
以下圖所示,採用測試用例模塊化設計,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來定位元素的屬性。
一、給登陸模塊加載測試庫和資源文件,以下圖所示:
二、添加全局變量,以下圖所示:
三、因爲腳本編寫會用到String、BuiltIn、Selenium2Library、OperatingSystem測試庫文件的關鍵字及調用變量資源文件,因此給資源文件common_keywords.html加載變量文件和String、BuiltIn、Selenium2Library、OperatingSystem測試庫文件,加載資源變量文件用於調用common_variable.html文件。
四、在message_common文件設置全局變量:
會把common_keywords.html文件的數值傳遞給message_common文件自定義的變量存儲。
五、在common_keywords.html建立login用戶關鍵字通用的登陸子模塊,並設計腳本和參數設置,以下圖所示:
由圖可知,參數是從全局變量傳遞過來給腳本調用。
六、用例舉例實現步驟首先登陸平臺,而後進入菜單「設置 」界面上修改真實姓名和情感狀態、血型後點擊保存等動做。
在測試用例「正常登陸測試」,設置初始化變量如圖所示運行用戶關鍵字message_common,腳本編寫第一行是調用公有資源文件login子模塊,而後進行一步操做。
可按快捷鍵F8運行測試,測試結果以下:
測試LOG日誌以下圖所示:
測試報告以下圖所示:
2、數據驅動
數據驅動方式用來編寫一些帶有輸入數據變量的工做流。用高級別的關鍵字—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會彈出以下測試日誌和測試報告,以下圖測試日誌所示:
測試報告: