[英]Robot Framework custom keyword only in Test Setup
Robot Framework是否有可能只允許在“測試設置”部分(或“測試拆解”)中執行自定義關鍵字 ? 假設我有一個名為“ My Setup
的關鍵字。 如果在正常步驟(即不在“測試設置”中)執行“ My Setup
,則測試應失敗。 關於用戶關鍵字和瀏覽StackOverflow的RF文檔並沒有給我任何有意義的結果。
例如, Run keyword if all tests passed
,則Robot Framework內置函數Run keyword if all tests passed
的文檔指出“嘗試在其他任何地方使用它會導致錯誤”,因此我想知道應該采用某種方式將此方法應用於自定義關鍵字。
我試圖通過在開始執行測試之前分析測試文件並檢查是否出現“測試設置”中未出現的“ My Setup
來解決此問題。 但是,這感覺很麻煩,因此我正在尋找如下內容:
def MySetup(self, some_arg):
if MAGIC.not_inside_test_setup():
raise AssertionError('"My Setup" can be executed only in Test Setup')
我在同事的幫助下設法解決了這個問題。 解決方案如下:
假設在名為My Library
定義了My Setup
關鍵字。
start_keyword
的偵聽器方法執行自定義關鍵字“ My Setup
。 該方法包含有關該關鍵字是作為常規關鍵字還是作為Test Setup / Teardown關鍵字執行的信息。 My Setup
以not-test-setup關鍵字運行,則應在偵聽器中通過“ My Library
實例設置“ My Library
內部的全局錯誤標志。 My Setup
”開始時,檢查“ My Library
的全局錯誤標志是否已設置; 如果設置,則會引發錯誤。 MyLibrary.py
SETUP_ERROR = None
class MyLibrary(object):
def MySetup(self, some_arg):
global SETUP_ERROR
if SETUP_ERROR:
raise AssertionError(SETUP_ERROR)
# Otherwise continue with the setup
def _SetError(self, error):
global SETUP_ERROR
SETUP_ERROR = error
Listener.py
from MyLibrary import MyLibrary
class MyListener(object):
# ...
def start_keyword(self, name, attributes):
if name == 'MyLibrary.My Setup' and attributes['type'] != 'Setup':
MyLibrary()._SetError('"My Setup" can be executed only in Test Setup')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.