在產品驗收測試過程中,產品功能趨于穩定狀態,測試過程中所使用的測試用例很大程度上與此前的功能測試用例重復,為了更全面的覆蓋軟件功能,確保軟件質量,驗收測試的用例相對更豐富,執行的次數也更多。因此在驗收測試的過程可以將重復性的測試工作自動化,從而提高測試的效率和質量。
Robot Framework是一款python編寫的功能自動化測試框架。具備良好的可擴展性,支持關鍵字驅動,可以同時測試多種類型的客戶端或者接口,可以進行分布式測試執行。主要適用于輪次很多的驗收測試和驗收測試驅動開發(ATDD)。Robot Framework是一款通用、應用性強、技術獨立的框架,如下圖所示采用高度模塊化結構。
在簡單、易編輯的表格中輸入測試數據(Test Data),Robot Framework啟動后就會處理測試數據,執行測試用例,然后生成測試日志和報告,核心框架不需要關心測試用例的目的,以及用例與測試庫的交互處理過程。測試庫可以直接使用應用程序接口或者使用更底層的工具作為驅動程序。
搭建Robot Framework環境的過程在此不做贅述,網上有很多教程。本文主要記錄使用RIDE學習Robot Framework框架的過程。默認安裝好Robot Framework并導入基本庫Selenium2Library和DatabaseLibrary。
了解RIDE
RIDE類似于Robot Framework的用戶控制面板,RIDE可以讓初學者對Robot Framework框架有一個直觀的了解。另外,得益于RIDE簡單、直觀的界面,初學者可以很快的上手。
RIDE界面可以簡單分成兩部分,左邊是測試項目體系,右邊包含Edit、Text Edit和Run三部分,主要負責是編輯、運行、調試測試用例。
創建項目
創建Project
點擊“File--New Project”創建Project,可以自定義Project存放路徑,選擇Project類型和格式。當項目規模很小,功能單一時,Project類型可以選擇File,直接在Project下面創建Test Case即可。如果Project規模較大,那么建議選擇Directory類型,可以在Project下面創建不同的Suit。
創建Suit
右擊創建好的Project,點擊“New Suit”創建Suit。本質上來說,Project和Suit并沒有區別,Suit類型也分為File和Directory,File類型的Suit下面可以直接創建Test Case,而Directory類型的Suit下面只能繼續創建Suit。
創建Test Case
創建Project和Suit的最終目的就是根據測試對象搭建目錄體系存放不同的Test Case,確保整個項目結構清晰,可以迅速的找到目標Test Case。創建Test Case的方法很簡單,右擊創建好的Suit,點擊“New Test Case”即可。
Edit和Text Edit
導入外部庫
Project和Suit的Edit功能基本相同,主要包括導入外部資源、創建全局變量、定義元數據等。
robot中的測試用例由關鍵字組成,而關鍵字來源于庫,為了實現不同的測試功能,需要導入不同的庫。robot本身安裝完成后會包含幾個基本的庫,但是并不能滿足測試需要,好在robot有大量的外部庫,用戶可以根據需求自行導入。以導入AutoItLibrary庫為例闡述導入外部庫的流程。
1、下載并安裝pywin,下載地址:https://sourceforge.net/projects/pywin32/files/pywin32/。需要注意pywin版本與已安裝的python版本保持一致。如下圖所示是python2.7(64位),那么下載pywin時應該選擇64位,對應py2.7的。安裝完成后,在dos命令窗口中執行。
2、下載并安裝AutoItLibrary,下載地址:https://code.google.com/archive/p/robotframework-autoitlibrary/downloads。 解壓AutoItLibrary文件,打開dos命令窗口,進入解壓后的AutoItLibrary目錄,執行:python setup install。
3、64位的機器還需要安裝AutoIt V3,下載地址:https://www.autoitscript.com/site/autoit/downloads/。
4、安裝好后打開robot,點擊右側的“library”,在name一欄中填寫“AutoItLibrary”,點擊確定。如果AutoItLibrary顯示為黑色,則表明導入成功,不幸的是我導入失敗,AutoItLibrary顯示紅色,報錯信息如下:
原因是AutoIt V3安裝后并沒有加載,在dos命令窗口中進入....\AutoIt\AutoItX目錄,執行:regsvr32 AutoItX3_x64.dll。再次導入AutoItLibrary庫即可。
5、按F5鍵彈出關鍵字搜索框,source選擇AutoItLibrary就可以查看AutoItLibrary庫中關鍵字相關信息了。F5是查看關鍵字使用方法的有效途徑,在學習使用robot的過程中可以經常使用F5學習更多的關鍵字。
導入資源
外部資源可以看成是自定義的庫,這個自定義庫中存放的是用戶按需自行封裝的關鍵字。用戶自定義resource,隨后在Suit中導入這個resource,那么在這個Suit中就可以使用resource中封裝的關鍵字了。關鍵字與用例一樣都是由關鍵字組成,不同之處在于關鍵字可以有參數和返回值,編寫關鍵字時使用的參數、返回值,就是使用關鍵字時的格式。以關鍵字“獲取用戶uuid”為例:
1、右擊Project,點擊“New resource”創建resource_1;
2、右擊創建好的resource,點擊“New User Keyword”創建關鍵字“獲取用戶uuid”;

3、在Suit中導入resource_1,那么在該Suit中就可以使用resource_1中所有的關鍵字了;
4、使用關鍵字“獲取用戶uuid”;
測試用例
Test Case的Edit功能就是編寫測試用例,在表格中輸入關鍵字組成一條測試用例,以百度為例編寫一條Test Case。首先需要安裝、導入外部庫Selenium2,然后編寫如下用例。
1、右擊Suit,點擊“New Test Case”創建case1;
2、第一步打開谷歌瀏覽器,訪問百度;第二步在搜索框內輸入“測試”;第三步點擊“百度一下”;第四步將搜索結果截圖;最后關閉瀏覽器;
Text Edit
Text Edit就是將Edit中設置的內容以text的格式展示。project屬于目錄,點擊Project則展示Project設置的內容。而suit是一個text文件,case是text文件中的內容,因此點擊Suit或Test Case則展示Suit文件中所有的內容,包括Suit中導入的庫、資源、創建的變量、以及所有的用例等。
Run
Run是robot界面中最重要的部分之一,測試用例編寫完成后在Run頁面運行、調試,這部分的核心包括運行和日志。
運行
每個Test Case前有一個勾選框,勾選需要執行的用例后點擊“start”。如果沒有勾選任何用例,那么默認執行該Suit中的所有用例。當然,也可以不通過勾選框執行部分用例。
start下方有一個Arguments,在輸入框輸入pybot命令可以實現相應的操作。例如參數設置為“-s [suit名稱]”表明執行該Suit下的所有用例,參數“-t [用例名稱]”表明執行該用例。詳細的使用方法可以自行查詢,在dos窗口中執行“pybot.bat --help”即可查看相關命令的使用方法和詳細介紹。
另外使用tag也是一種方式,給部分用例打上tag(在用例編輯頁面Tags框中輸入tag即可),勾選“Only run tests with these tags”并在輸入框中輸入tag,點擊run,則執行所有打上該tag的用例;也可以勾選“Skip tests with these tags”,那么將跳過所有打上該tag的用例,執行剩余的用例。
日志
用例執行完后點擊“Report”和“Log”查看用例執行報告和日志。測試報告包括測試用例執行的基本信息、具體結果以及詳細信息,側重于將測試結果匯總展示出來,方便用戶查看測試結果、編寫測試報告。
日志信息中也展示了測試用例執行的結果,并且記錄了用例執行的具體步驟以及每一步的執行結果,綠色的為執行成功的步驟,紅色的是執行失敗的步驟,顯示了具體的失敗信息,用戶可以根據失敗信息修改用例。
當然用例執行過程中Run標簽頁面會同步打印出用例執行信息,包括執行結果和簡單的日志信息。
變量
在介紹Edit標簽頁面時沒有講解添加變量,在此通過幾個小例子詳細的講解一下添加、使用變量的方法。project、suit的edit標簽頁都可以添加變量,case內也可以定義變量,不過不同位置添加的變量作用范圍不一樣,當然優先使用順序也不一樣。簡單而言就是,project中添加的變量作用于整個project,但是當project中的變量與suit中的變量同名時,優先使用suit中的變量。同理,case中的變量最優先使用,但作用范圍最小。
添加變量
1、選中suit,點擊Edit標簽頁的“Add Scalar”添加變量${ending};
2、在本suit所有用例最后打印該變量,添加內容如下所示,那么每個用例執行的最后一步就是“INFO : 本用例執行完畢,請仔細查看log信息!”
添加列表
有時候變量并不能滿足需求,例如上面的用例,想要一次性搜索多個關鍵詞,那么就需要使用列表。
1、選中suit,點擊Edit標簽頁的“Add List”添加列表@{keywords};
2、由于需要搜索多個關鍵詞,因此需要用到循環語句依次讀取list中的變量,用例具體如下所示:
添加字典
還有一種類型的變量是字典,列表的優勢在于可以創建、使用多個變量,但是不足之處在于無法靈活的取出某一個變量,而字典一個key對應一個value,可以利用key值快速的查找某一個變量。
上圖是一個簡單的示例,在Case中創建字典變量&{dic},兩個key(user、passd)分別對應兩個value(test、123456)。login是一個自定義關鍵字,用法是關鍵字后加登錄的用戶名和密碼即可。