Robot Framework中對出錯用例處理的策略


  • 出錯后退出

    在默認情況下,當一個測試用例中的某個關鍵字返回錯誤時,這個測試用例就停止執行剩余的關鍵字。RF會繼續執行下一個用例。這么做的好處是節省時間--反正這里出問題要返回來看了,再繼續執行剩下的關鍵字也沒有用了。

  • 出錯后繼續執行

     但是,有時候,我們卻需要執行用例中的所有關鍵字,例如:要獲取更多的出錯信息、更改某些全局相關的變量、做teardown或者rollback操作等。這時候,我們就可以使用BuiltIn庫中的關鍵字來讓特定關鍵字出錯后RF仍然執行用例中剩余關鍵字。

第一個關鍵字是:Run Keyword And Continue On Failure

假設我們有個關鍵字叫做 Mykeyword

我們這樣使用:

 Run Keyword And Continue On Failure  Mykeyword
 Log  這一句被執行

這樣,不管Mykeyword這個關鍵字是否fail,下一個關鍵字Log都會被執行。

如果Mykeyword有返回值,我們可以這么使用:

 

 ${str}  Run Keyword And Continue On Failure  Mykeyword
 Log  ${str}  

 

  • 獲取關鍵字執行結果后繼續執行 

    有時候,我們需要獲取某個關鍵字的執行結果,然后根據結果做不同后續操作,這個時候,我們就會用到關鍵字Run Keyword And Ignore Error 。假設我們要執行一個關鍵字Mykeyword,關鍵字有一個返回值。我們可以如下使用:

 

 ${result}  ${returnvalue}  Run Keyword And Ignore Error Mykeyword 
 Log  ${result}+${returnvalue}    

Run Keyword And Ignore Error 有2個返回值${result}獲取執行結果,值為PASS或者FAIL;${returnvalue}獲取Mykeyword的返回值。

  • TestSuit級別出錯處理

有些場合,我們想要在整個testsuit執行結束后根據執行結果做一些特殊操作。這時候,我們就用上了下面幾個個關鍵字:

Run Keyword If All Critical Tests Passed

Run Keyword If All Tests Passed

Run Keyword If Any Critical Tests Failed

Run Keyword If Any Tests Failed

Run Keyword If Test Failed

Run Keyword If Test Passed

Run Keyword If Timeout Occurred

 

這些關鍵字有些像Java中的Finally語句,但是略有區別,大家可以在使用的時候細細體會。另外要說的是,這些關鍵字只能被用到Suit Teardown部分(一般會寫到一個用戶自定義關鍵字中,被Suit Teardown調用)。他們的含義通過字面我們已經能夠理解,格式也跟上邊的兩個關鍵字格式一致,就不一一展開介紹了。

 

  • 題外話
  1. 每個用例只做一件事情是一個好習慣。
  2. 慎用Test setup和test teardown,善用Suit setup 和 Suit teardown
  3. 用戶關鍵字很好,但盡量不要多層嵌套,2層足矣,不然你的用例組織結構就有問題。

2013-09-03修改:關於關鍵字嵌套。原來上面紅色部分說的並不准確。目前我們利用3層結構: 業務層(描述測試點如:登錄檢測),組件層(業務層描述功能點的實現實現一個功能點最小的步驟,這層盡量不出現技術關鍵字。如:輸入正確用戶名密碼,輸入 錯誤用戶名。。。),實現層(技術關鍵字:如:inputtext id=uname uname 。。。)

 

關於分層,其實沒很好的定論,有幾個原則可以提一下:

1.促進復用。

2.把用例邏輯同具體實現做一定隔離。經過統計,系統演進的時候,功能點本身變更不大,流程細節會有一些變更,UI變更是最大的。分層可以讓你少改些東西。

3.讓用例更加有可讀性。

 

如果你認為滿足了以上三點,分幾層無所謂,自己爽才是真的爽。跑題了。

   這樣利用上述錯誤處理機制就基本能滿足你的要求了。

   其實我想找一個關鍵字:在用例中任意位置,不管上面關鍵字執行情況如何都會執行,這樣更方便,可惜沒有,只能規避。享受表格語言接近自然語言的特性,就要忍受它不如高級語言靈活。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM