1. 程式人生 > >python-RobotFramework-RIDE使用方法

python-RobotFramework-RIDE使用方法

一.環境搭建 網上有很多的教程,這裡就不多講了 二.RIDE的介面認識 Robot Framework完整流程學習系列一
這裡只介紹幾個重要常用的功能,其他相信自己都能理解 1.Search Keywords(F5): 搜尋關鍵字 Robot Framework完整流程學習系列一

2.Content Assistance:內容助手

Robot Framework完整流程學習系列一

3.View RIDE Log:檢視RIDE日誌,使用過程中報錯,可以來這裡檢視,尋找報錯原因 三.最基本的流程 1.New Project
Type選擇Directory,Format選擇TXT Robot Framework完整流程學習系列一

2.New Suite 在Project的基礎上Create New Suite,Type選擇File,Format選擇TXT Robot Framework完整流程學習系列一

3.New TestCase 在Suite的基礎上Create New TestCase Robot Framework完整流程學習系列一

4.New Resource 在Project的基礎上Create New Resource Robot Framework完整流程學習系列一

5.New User Keyword 在Resource的基礎上Create User Keyword
Robot Framework完整流程學習系列一

這時候你的RIDE如下圖顯示就對了 Robot Framework完整流程學習系列一


四.工作區EDIT 1.測試套件 Robot Framework完整流程學習系列一

大體分成3個部分。

(1):載入外部檔案

Add Library      :載入測試庫,主要是[PYTHON目錄]\Lib\site-packages裡的測試庫

Add Resource:載入資源,主要是你工程相關的資原始檔

Add Variables:載入變數檔案,不怎麼用,可暫時忽略

(2):定義內部變數

Add Scalar:定義變數

Add List:定義列表型變數

(3):元資料定義

Add Metadata:定義元資料。我是直接翻譯的,這個是新增加的部分,大概看了一下作用是在report和log裡顯示定義好的內容,格式和document一樣。

2.新增Resource(在Suite中

Robot Framework完整流程學習系列一

3.新增Library(在Suite中

Robot Framework完整流程學習系列一

4.新增成功的標誌,在Source中出現Selenium2Library和res1

Robot Framework完整流程學習系列一

5.setting(包括Project,Suit,Case,Resource,User Keywords圖片就不一一上傳了)

Robot Framework完整流程學習系列一

Documentation:文件,每一項都有。可以給當前的物件加入文件說明。

Suite Setup指的是測試套件啟動的時候就執行某個關鍵字。(例:我在Suite Setup設定了Sleep | 5sec,表示等待5秒,要注意關鍵字的引數要使用 | 分隔)

Test Teardown指的就是案例結束的時候執行某個關鍵字。

Test Template:測試模版,這是可以指定某個關鍵字為這個測試套件下所有TestCase的模版,這樣所有的TestCase就只需要設定這個關鍵字的傳入引數即可。

Test Timeout:設定每一個測試案例的超時時間,只要超過這個時間就會失敗,並停止案例執行。這是防止某些情況導致案例一直卡住不動,也不停止也不失敗。

Force Tags:這裡還是要說一下,在檔案型Suite這裡還可以繼續給子元素增加Force Tags,但是他不能刪除父元素設定的tags

Default Tags:預設標記,其實和Force Tags沒啥區別的

Arguments:傳入引數

Return Value:返回值

五.工作區RUN

Robot Framework完整流程學習系列一

 Execution Profile:選擇執行方式,裡面有pybot、jybot和custom script。其中我們預設是用pybot來執行案例,jybot需要安裝Jython的支援。custom script是選擇自定義的指令碼來執行。就目前而言,我們不用修改了,預設pybot即可

 Start和Stop:這兩個應該不用說了,執行和停止案例。

 Report和Log: 報告和日誌,要執行之後才能點選。他們的區別麼,我的感覺是報告更多是結果上的展示,日誌更多是過程的記錄,更多使用的還是日誌。

 Autosave: 自動儲存,如果不勾選,在修改了案例之後如果沒有儲存的話,執行案例時會提示是否儲存。勾選則在執行時自動儲存了。

 Arguments: pybot的引數(或者jybot等),比如我後面截圖裡加上了一個引數。完整版的引數可以在doc命令列輸入pybot.bat --help

Only Run Tests with these Tags: 只執行這些標記的測試案例。

Skip Tests with these Tags: 跳過這些標記的測試案例

六.案例設計之流程與資料分離1

 1.建立案例

Robot Framework完整流程學習系列一

這算是一個比較完整的案例了,包含完整的流程和檢查點,那麼這時候如果我要增加一個案例,搜尋另外的內容怎麼辦呢?

在原來的case上修改肯定是不合適的,畢竟那個案例可能還是需要保留的。

最簡單的辦法,把這個case複製一個,修改搜尋內容。那麼我們複製出一個case2吧

Robot Framework完整流程學習系列一

2.分層方法

選中case中的所有指令碼,點選右鍵,選擇Extract Keyword

Robot Framework完整流程學習系列一

而我們再看case的內容就只有這個關鍵字了

Robot Framework完整流程學習系列一

新建一個Resource檔案,把UserKeyword移動過去(或者移動到已有的Resource檔案裡)

這樣做的目的是為了更清晰,在測試套件中一般不放置UserKeyword,前面第2講的時候我們就說過了,首要建議UserKeyword放在Resource裡。

我這裡新建一個Resource,叫TestFlow.txt,然後把這個搜尋測試移動過去,就成了這樣。

接下來我們針對這個測試流程進行分離,因為這個案例流程比較簡單,實際上就只有搜尋內容這一個值是變化的,因此我們把他改成一個變數,同時把這個UserKeyword的引數加上這個變數。

Robot Framework完整流程學習系列一

再回頭看看case的內容和新增內容

Robot Framework完整流程學習系列一
可以執行試試看

到現在我們完成了一個簡單的分層,把搜尋測試這個流程剝離成一個關鍵字,然後在不同的case呼叫這個關鍵字,然後傳遞不同的引數,用以進行不同資料在同一個流程下的測試。

這樣就不用擔心再新增10個或100個案例了,因為這個案例比較簡單,通過複製也可以做出10個或100個案例,但是最大的區別在於,如果我的流程中間需要做一點小的調整和優化,對於流程和資料分離的案例來說,我這樣維護一下搜尋測試這個UserKeyword就行了;對於複製的案例,那你就要辛苦了,你有多少個案例就改多少吧。

其實這個道理引申出來,我們做自動化測試也是一樣,選擇不同的方法或者工具都可以實現最終的目標,但是我們需要考慮的不是把案例做起來,因為這個比較容易實現。對於自動化案例來說,最大的難度不是在於怎麼做案例,而是怎麼維護案例。因為隨著需求的更新,系統的流程或者頁面會發生很多的變化,這時候的維護成本的高低才是我們首要考慮的,如果自動化案例建立起來之後,沒有後續維護的投入,最終經過若干個版本,這些自動化案例基本就是廢棄的了。

七.案例設計之流程與資料分離1

將搜尋測試中的內容繼續分層,還是要把一些底層的程式碼級關鍵字繼續拆分出來

下面對res1.txt進行操作

1.開啟瀏覽器

Robot Framework完整流程學習系列一


 2.輸入搜尋內容

Robot Framework完整流程學習系列一

3.點選搜尋

Robot Framework完整流程學習系列一

4.校驗標題

Robot Framework完整流程學習系列一

5.關閉瀏覽器

Robot Framework完整流程學習系列一

接著我們把對應的搜尋測試中的程式碼都換成相應的關鍵字,記得新增引數${url}


Robot Framework完整流程學習系列一

最後該運行了

Robot Framework完整流程學習系列一

至此,我們這個案例就已經完成分層了,因為案例比較簡單,所以只分了3層,分別是案例層,流程層,元素層。他們的呼叫關係也是逐層深入的

Robot Framework完整流程學習系列一

=============總結一下=============

這樣做的好處不單是為了以後維護方便,也使得案例的架構層級清晰。越是靠近上層的部分,指令碼越貼近自然語言,或者說很像我們的測試案例;越靠近下層的部分,越是接近頁面元素的程式碼級部分。這樣以後如果發生維護的時候,根據需要維護的內容,只需要在很少的地方進行調整即可。比如一個元素的id變了,那我只要在elements裡面更新就行了。比如測試的流程調整了,以前是ABC的頁面順序,現在是ACB的頁面順序,那麼只要在testflow層進行調整即可。

那麼回到我們的標題,流程與資料分離,實際上目前我們的流程都集中在testflow以及下面的部分,而資料一般都是在案例層去給流程層傳遞,這就是我們的流程與資料分離了。當然,我們還可以再進一步的分離,把資料放到外面,脫離我們的案例,在執行的時候才傳遞進行,也是可以實現的。後面我會做個簡單的例子給大家看。

<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script> 閱讀(27) | 評論(0) | 轉發(0) | 給主人留下些什麼吧!~~ 評論熱議