今天總結下Robot Framework最基本的用法,一來呢,希望自己以後看到這篇總結,很快能回憶起如何使用Robot Framework。二來呢,以初學者的姿态總結Robot Framework,希望幫助到剛入門,卻無從下手的新手們,畢竟網上很多資料可能是一些大神整理的,跳躍性很大。
一,環境的搭建
關于robotframework環境搭建請參考筆者的另外一篇博文:Robot Framework的環境搭建
二,最基本流程
2.1 建立項目New Project
File->New Project

注:選擇directory原因是,在directory的項目下可以建立測試套件,如果是tpye為file,則隻能建立測試用例,這不利于用例的管理。
2.2 建立測試套件New Suite
右鍵項目Test,點選New Suite。
注:選擇file原因是,在file的測試套件下可以建立測試用例,如果是tpye為directory,還得重新再繼續建file的測試套件,才能建立測試用例,因為測試用例隻能在file類型下建立。
2.3 建立測試用例New Test Case
右鍵測試套件,點選New Test Case。
最終頁面顯示
三,Ride各個面闆說明
3.1 測試套件工作區說明
3.1.1 測試套件Edit區
大體分成4個部分。
(1) 加載外部檔案
Library:加載測試庫,主要是[PYTHON目錄]\Lib\site-packages裡的測試庫。具體操作可檢視博文下方的“4.2 第三方庫”。
Resource:加載資源,主要是你工程相關的資源檔案。具體操作可檢視博文下方的“5.2.5導入Resource”。
Variables:加載變量檔案,不怎麼用,可暫時忽略。
(2) 定義内部變量
Add Scalar:定義變量。
Add List:定義清單型變量。
Add Dict:
(3) 中繼資料定義
Add Metadata:定義中繼資料。
(4) settings
一般settings是隐藏的,點選settings按鈕,則會顯示。
Documentation:文檔,每一項都有。可以給目前的對象加入文檔說明。
Suite Setup: 指的是測試套件啟動的時候就執行某個關鍵字。(例:我在Suite Setup: 設定了Sleep | 5sec,表示等待5秒,要注意關鍵字的參數要使用 | 分隔)
Suite Teardown: 指的是測試套件結束的時候就執行某個關鍵字。
Test Setup: 指的就是案例啟動的時候執行某個關鍵字。
Test Teardown: 指的就是案例結束的時候執行某個關鍵字。
Test Template:測試模版,這是可以指定某個關鍵字為這個測試套件下所有TestCase的模版,這樣所有的TestCase就隻需要設定這個關鍵字的傳入參數即可。
Test Timeout:設定每一個測試案例的逾時時間,隻要超過這個時間就會失敗,并停止案例運作。這是防止某些情況導緻案例一直卡住不動,也不停止也不失敗。
Force Tags:在檔案型Suite這裡還可以繼續給子元素增加Force Tags,但是他不能删除父元素設定的tags。
Default Tags:預設标記,其實和Force Tags沒啥差別的。
Arguments:傳入參數。
Return Value:傳回值。
3.1.2 測試套件Text Edit區
測試套件測試用例文本資訊。
3.1.3 測試套件Run區
Execution Profile:選擇運作方式,裡面有pybot、jybot和custom script。預設pybot即可。
Start:運作案例。若該測試套件下的測試用例前無勾選,則預設執行該測試套件下所有的用例。若測試用例勾選,則執行該測試陶見下勾選的用例。
Stop:停止案例。
Report和Log: 報告和日志,要運作之後才能點選。他們的差別,報告更多是結果上的展示,日志更多是過程的記錄,更多使用的還是日志。
Autosave: 自動儲存,如果不勾選,在修改了案例之後如果沒有儲存的話,運作案例時會提示是否儲存。勾選則在運作時自動儲存了。
Arguments: pybot的參數(或者jybot等)。完整版的參數可以在doc指令行輸入pybot.bat –help
Only Run Tests with these Tags: 隻運作這些标記的測試案例。在case的setting裡可以添加tag。
Skip Tests with these Tags: 跳過這些标記的測試案例。在case的setting裡可以添加tag。
3.2 測試用例工作區說明
3.2.1 測試用例Edit區
(1)settings
Documentation:文檔,每一項都有。可以給目前的對象加入文檔說明。
Setup:指的就是案例啟動的時候執行某個關鍵字。
Teardown:指的就是案例結束的時候執行某個關鍵字。
Tags:标記某個測試用例。在Run區中Only Run Tests with these Tags和Skip Tests with these Tags,會通過這個标志位來識别是否運作或跳過用例。
Timeout:設定每一個測試案例的逾時時間,隻要超過這個時間就會失敗,并停止案例運作。這是防止某些情況導緻案例一直卡住不動,也不停止也不失敗。
Template:測試模版,這是可以指定某個關鍵字為這個測試套件下所有TestCase的模版,這樣所有的TestCase就隻需要設定這個關鍵字的傳入參數即可。
(2) 表格區
最重要的部分,編寫測試用例。
第一列一般寫的是關鍵詞,關鍵詞的來源包括BuiltIn庫,第三方導入庫,自己編寫的導入庫。詳見博文下方關于庫的說明:四,Robotframework庫的介紹。
使用技巧:
通過ctrl+alt+space可以自動帶出相關關鍵字。以及相關用法,裡邊有對入參的說明。
Ctrl+滑鼠懸浮(即滑鼠在某個關鍵字上),可以直接顯示關鍵字的相關用法。
第二三四五列,一般是入參,紅色的表示必填的入參。淺灰色表示選填的入參。深灰色表示無需填寫。
輸入sho再同時按住ctrl+alt+space鍵,則可以自動帶出相關關鍵字,以及選中關鍵字的用法。
對于已輸入的關鍵字,忘了其用法,可以點選輸入框再同時按住ctrl+alt+space鍵,即可檢視該關鍵字的用法。
3.2.2 測試用例Text Edit區
同測試套件。
3.2.3 測試用例Run區
同測試套件。
四,Robotframework庫的介紹
4.1 BuiltIn内建庫
首先先介紹下robotframework的庫,通過點選F5快捷鍵。目前隻有内建的庫BuiltIn,關于内建的庫BuiltIn的關鍵字說明請檢視另外一篇博文:學習Robot Framework必須掌握的庫—-BuiltIn庫。
注:其實關鍵字就是方法名函數名而已。
4.2 第三方庫
隻有内建的庫往往還不能滿足需求,還可以導入第三方庫,如操作頁面的Selenium2Library。
第三方庫,主要是[PYTHON目錄]\Lib\site-packages裡的庫,一般安裝的庫會在此目錄下。Selenium2Library庫的安裝也可以詳看筆者的另外一篇博文:Robot Framework的環境搭建。博文中有說明Selenium2Library庫的安裝。
在測試套件下的工作區的右方,點選Library,在彈出框的name欄輸入“Selenium2Library”,點選OK即可。
當工作區的Library那一行黑色顯示,說明導入成功(如果顯示紅色說明導入不成功,可自行百度解決)。
點選F5快捷鍵檢視,可檢視多了一個Selenium2Library的庫。
4.3 導入自己編寫的庫
比如說有些功能想自己編寫,比如說如下代碼,想要導入實作校驗url的功能,檔案名為Myimport.py(檔案名随意取的,最好是英文的),該檔案儲存在D:\robotframework\MyLibrary,此時需要将該路徑添加到[PYTHON目錄]\Lib\site-packages下的字尾名為pth的檔案(檔案名随意取的,最好是英文的)中。
# -*- coding:utf-8 -*-
"""
自己編寫,驗證獲得一個URL位址的擴充名。
"""
import re
def Matchurl(str0):
u'''
驗證url的有效性
'''
str1=re.split("[.]",str0)
listt = ['php','html','asp','jsp']
if str1[-1] in listt:
return "TRUE"
else:
return "FAIL"
if __name__=='__main__':
str_input='hehe.php'
print match_url(str_input)
然後重新開機ride,在測試套件的工作區的右方,點選Library,在彈出框的name欄輸入“Myimport”,點選OK即可。
點選F5,即可看到導入自己編寫的庫。
注意,在Myimport.py檔案中編寫函數描述時,前面要加u,否則F5檢視時,會亂碼。
注意,在Myimport.py檔案中函數命名為MatchUrl和Match_Url,在ride中都會解析為Match Url。
五,用例編寫及執行
5.1 編寫百度搜尋的測試案例。
關于selenium2Library的關鍵字使用,可自行百度“robot framework的selenium2Library的操作手冊”,網上大把說明。
這裡提一句,關于定位元素,可以通過id,name,xpath,link,css,tag等定位。
Id定位:id=kw
Name定位:name=wd
Xpath定位:xpath=//input[@id=’kw’]
Link定位:link=link_text
Css定位:css=#kw
Tag定位:tag=input
具體定位方式跟selenium的如出一轍,可以檢視筆者另外一篇博文:Selenuim+Python之元素定位總結及執行個體說明。
5.2 分層方法-案例層和流程層分離
如果想改變輸入框的輸入詞,則需要不停的複制case,為了減少備援,可以做一個簡單的分層,把搜尋流程剝離成一個關鍵字,然後再不同的case中調用這個關鍵字,然後傳遞不同的參數,以進行不同資料在同一流程下測試。
那如何分層呢?
5.2.1 建立User Keyword
先選中case中所有的腳本,右鍵選擇Extract Keyword。
此時左邊區域會出現“搜尋測試”User Keyword,該User Keyword在測試套件下,一般測試套件不放置User Keyword,建議User Keyword放置在Resource下。
5.2.2 建立Resource
如果存在可以不需要建立。
右鍵項目Test,點選New Resource。
我這裡建立的Resource叫做MyResource.txt.
5.2.3 将User Keyword移至MyResource下。
5.2.4 User Keyword入參設定
由于搜尋資料可變,将其作為入參,變量用 表示,在<spanlang="EN−US">settings的<spanlang="EN−US">Arguments設定,若是有多個入參,那麼用<spanlang="EN−US">|分隔,如<spanlang="EN−US"> 表 示 , 在 < s p a n l a n g =" E N − U S "> s e t t i n g s 的 < s p a n l a n g =" E N − U S "> A r g u m e n t s 設 置 , 若 是 有 多 個 入 參 , 那 麼 用 < s p a n l a n g =" E N − U S "> | 分 隔 , 如 < s p a n l a n g =" E N − U S "> {入參1}|${入參1}
5.2.5 導入Resource
需要在測試套件中導入Resource,才能使用該Resource下的User Keyword。這一步别忘了哦。如果之前導入過,則忽略。
在測試套件下的工作區的右方,點選Resource,在彈出框的name欄輸入“MyResource.txt”,點選OK即可。
當工作區的Resource那一行藍色顯示,說明導入成功(如果顯示紅色說明導入不成功,可自行百度解決)。
點選F5快捷鍵檢視,可檢視多了一個MyResource.txt的庫。
5.2.6 檢視測試用例
會發現原來的一串表格代碼程式設計“搜尋測試”User Keyword,且還有個必須輸入的入參。
這樣可以輕松的添加多個測試案例了。
5.3 分層方法-流程層和元素層分離
将搜尋測試中的内容繼續分層,将底層的關鍵字繼續拆分。
5.3.1 建立Resource
如果存在可以不需要建立。
右鍵項目Test,點選New Resource。
我這裡建立的Resource叫做ElementResource.txt。
建立之後,記得在MyResource.txt工作區下,導入ElementResource.txt資源哦。如何導入,詳見“5.2.5導入Resource”。
5.3.2 建立User Keyword
選中Open Browser那一行,右鍵選擇Extract Keyword。
5.3.3 将User Keyword移至ElementResource.txt下。
5.3.4 将“打開浏覽器”的入參值由“http://www.baidu.com”改為${url}
此時,搜尋測試中,打開浏覽器的入參輸入框顯示紅色,說明必須有一個入參,可以填寫“http://www.baidu.com”。
5.3.5 剩餘關鍵字
剩餘關鍵字重複5.3.2-5.3.4操作。
輸入搜尋關鍵字
點選搜尋
校驗标題
關閉浏覽器
而此時搜尋測試頁面如下:
5.4 運作測試用例
選中需要運作的用例,點選運作按鈕。
可以在Run區檢視到用例執行情況。
點選Report(或者直接複制下方的url),可以檢視到測試報告,綠底表示測試通過。
點選Log(或者直接複制下方的url)。