出錯后退出
????在默認情況下,當一個測試用例中的某個關(guān)鍵字返回錯誤時,這個測試用例就停止執(zhí)行剩余的關(guān)鍵字。RF會繼續(xù)執(zhí)行下一個用例。這么做的好處是節(jié)省時間--反正這里出問題要返回來看了,再繼續(xù)執(zhí)行剩下的關(guān)鍵字也沒有用了。
出錯后繼續(xù)執(zhí)行
但是,有時候,我們卻需要執(zhí)行用例中的所有關(guān)鍵字,例如:要獲取更多的出錯信息、更改某些全局相關(guān)的變量、做teardown或者rollback操作等。這時候,我們就可以使用BuiltIn庫中的關(guān)鍵字來讓特定關(guān)鍵字出錯后RF仍然執(zhí)行用例中剩余關(guān)鍵字。
第一個關(guān)鍵字是:Run Keyword And Continue On Failure
假設(shè)我們有個關(guān)鍵字叫做 Mykeyword
我們這樣使用:
?Run Keyword And Continue On Failure?Mykeyword
?Log?這一句被執(zhí)行
這樣,不管Mykeyword這個關(guān)鍵字是否fail,下一個關(guān)鍵字Log都會被執(zhí)行。
如果Mykeyword有返回值,我們可以這么使用:
?${str}?Run Keyword And Continue On Failure?Mykeyword
?Log?${str}?
獲取關(guān)鍵字執(zhí)行結(jié)果后繼續(xù)執(zhí)行
????有時候,我們需要獲取某個關(guān)鍵字的執(zhí)行結(jié)果,然后根據(jù)結(jié)果做不同后續(xù)操作,這個時候,我們就會用到關(guān)鍵字Run Keyword And Ignore Error 。假設(shè)我們要執(zhí)行一個關(guān)鍵字Mykeyword,關(guān)鍵字有一個返回值。我們可以如下使用:
?${result}?${returnvalue}?Run Keyword And Ignore ErrorMykeyword?
?Log?${result}+${returnvalue}??
Run Keyword And Ignore Error 有2個返回值${result}獲取執(zhí)行結(jié)果,值為PASS或者FAIL;${returnvalue}獲取Mykeyword的返回值。
TestSuit級別出錯處理
有些場合,我們想要在整個testsuit執(zhí)行結(jié)束后根據(jù)執(zhí)行結(jié)果做一些特殊操作。這時候,我們就用上了下面幾個個關(guān)鍵字:
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
這些關(guān)鍵字有些像Java中的Finally語句,但是略有區(qū)別,大家可以在使用的時候細細體會。另外要說的是,這些關(guān)鍵字只能被用到Suit Teardown部分(一般會寫到一個用戶自定義關(guān)鍵字中,被Suit Teardown調(diào)用)。他們的含義通過字面我們已經(jīng)能夠理解,格式也跟上邊的兩個關(guān)鍵字格式一致,就不一一展開介紹了。
每個用例只做一件事情是一個好習慣。
慎用Test setup和test teardown,善用Suit setup 和 Suit teardown