python-RobotFramework-RIDE使用方法
這裡只介紹幾個重要常用的功能,其他相信自己都能理解 1.Search Keywords(F5): 搜尋關鍵字
2.Content Assistance:內容助手
|
2.New Suite 在Project的基礎上Create New Suite,Type選擇File,Format選擇TXT
3.New TestCase 在Suite的基礎上Create New TestCase
4.New Resource 在Project的基礎上Create New Resource
5.New User Keyword 在Resource的基礎上Create User Keyword
這時候你的RIDE如下圖顯示就對了
四.工作區EDIT 1.測試套件
大體分成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中)
3.新增Library(在Suite中)
4.新增成功的標誌,在Source中出現Selenium2Library和res1
5.setting(包括Project,Suit,Case,Resource,User Keywords圖片就不一一上傳了)
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
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.建立案例
這算是一個比較完整的案例了,包含完整的流程和檢查點,那麼這時候如果我要增加一個案例,搜尋另外的內容怎麼辦呢?
在原來的case上修改肯定是不合適的,畢竟那個案例可能還是需要保留的。
最簡單的辦法,把這個case複製一個,修改搜尋內容。那麼我們複製出一個case2吧
選中case中的所有指令碼,點選右鍵,選擇Extract Keyword
新建一個Resource檔案,把UserKeyword移動過去(或者移動到已有的Resource檔案裡)
這樣做的目的是為了更清晰,在測試套件中一般不放置UserKeyword,前面第2講的時候我們就說過了,首要建議UserKeyword放在Resource裡。
我這裡新建一個Resource,叫TestFlow.txt,然後把這個搜尋測試移動過去,就成了這樣。
接下來我們針對這個測試流程進行分離,因為這個案例流程比較簡單,實際上就只有搜尋內容這一個值是變化的,因此我們把他改成一個變數,同時把這個UserKeyword的引數加上這個變數。
再回頭看看case的內容和新增內容
到現在我們完成了一個簡單的分層,把搜尋測試這個流程剝離成一個關鍵字,然後在不同的case呼叫這個關鍵字,然後傳遞不同的引數,用以進行不同資料在同一個流程下的測試。
這樣就不用擔心再新增10個或100個案例了,因為這個案例比較簡單,通過複製也可以做出10個或100個案例,但是最大的區別在於,如果我的流程中間需要做一點小的調整和優化,對於流程和資料分離的案例來說,我這樣維護一下搜尋測試這個UserKeyword就行了;對於複製的案例,那你就要辛苦了,你有多少個案例就改多少吧。
其實這個道理引申出來,我們做自動化測試也是一樣,選擇不同的方法或者工具都可以實現最終的目標,但是我們需要考慮的不是把案例做起來,因為這個比較容易實現。對於自動化案例來說,最大的難度不是在於怎麼做案例,而是怎麼維護案例。因為隨著需求的更新,系統的流程或者頁面會發生很多的變化,這時候的維護成本的高低才是我們首要考慮的,如果自動化案例建立起來之後,沒有後續維護的投入,最終經過若干個版本,這些自動化案例基本就是廢棄的了。
七.案例設計之流程與資料分離1
將搜尋測試中的內容繼續分層,還是要把一些底層的程式碼級關鍵字繼續拆分出來
下面對res1.txt進行操作
1.開啟瀏覽器
2.輸入搜尋內容
接著我們把對應的搜尋測試中的程式碼都換成相應的關鍵字,記得新增引數${url}
至此,我們這個案例就已經完成分層了,因為案例比較簡單,所以只分了3層,分別是案例層,流程層,元素層。他們的呼叫關係也是逐層深入的
=============總結一下=============
這樣做的好處不單是為了以後維護方便,也使得案例的架構層級清晰。越是靠近上層的部分,指令碼越貼近自然語言,或者說很像我們的測試案例;越靠近下層的部分,越是接近頁面元素的程式碼級部分。這樣以後如果發生維護的時候,根據需要維護的內容,只需要在很少的地方進行調整即可。比如一個元素的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) | 給主人留下些什麼吧!~~ 評論熱議