Robotframework 入門教程(四)
阿新 • • 發佈:2019-02-20
==關鍵字 2==
關鍵字的預設引數,及接受任意數量引數關鍵字。
修改demo.robot 如下:
看到Calcalate and Check Equals 關鍵字引數中設定了引數預設值, 呼叫該關鍵字的時候可以傳入0-2個引數,如Second Case中的。
命令列robot執行case的時候, 加-t引數可以指定case名執行。robot -t “Second Case” demo.robot。 執行second case結果如下
需要關鍵字接受任意數量的引數,只需將keyword的Arguments 資料型別為列表或字典,他們分別對應python的*args,和**kwargs語法,
例如我們keywords中的Varargs keyword和Kwargs keyword,用一個for迴圈將輸入的引數列印到console,執行third case結果如。
根據實際需求可以多種引數組合使用,類似這種 [Arguments] ${req} ${opt}=42 @{others} &{kwothers}也可以。這就不舉例了。 RF中還可以將引數嵌入到關鍵字中,這麼寫的好處可以建立自然語言的關鍵字,描述出明確的目的,從而提高testcase的可讀性。
例如第四個關鍵字 Calculate "${expression}" and Check Equals "${expected}”。使用的時候直接把引數替換進去就可以了,像Fourth Case中這樣使用。
值得注意的是,一旦將引數嵌入到關鍵字,該關鍵字就不再支援[Arguments]傳入引數了。
引號不是必須的,但是如果是Select ${team} ${player}這樣的關鍵字,呼叫的時候可能會出問題 (例如:Select Spurs Tim Duncan),無法判斷team是Spurs 還是Spurs Tim。簡單的解決方式就是中間插點兒東西(例如:Select ${team} --- ${player} ),
我的處理方式就是簡單粗暴所有的變數都加“”。
關鍵字的預設引數,及接受任意數量引數關鍵字。
修改demo.robot 如下:
*** Settings *** [Documentation] Example test cases using the keyword-driven testing approach. *** Variables *** ${var1} 1+2+3 @{list1} a b c ${var1} &{dict1} key1=sf key2=${list1} *** Test Cases *** First Case Log to console ${var1} Log to console ${list1} Log to console ${dict1} Second Case Calculate and Check Equals Calculate and Check Equals 1+5 Calculate and Check Equals 7-2 ${5} Calculate and Check Equals expression=6+3 expected=${9} Third Case Varargs keyword a f ${var1} Varargs keyword @{list1} ${var1} Kwargs keyword key1=value1 key2=789 Kwargs keyword &{dict1} Kwargs keyword &{dict1} mykey=tututu &{dict1} Fourth Case Calculate "2+4" and Check Equals "${6}" *** Keywords *** Calculate and Check Equals [Arguments] ${expression}=3+3 ${expected}=${6} ${res} Evaluate ${expression} Log to console result = ${res} Should Be Equal ${res} ${expected} Varargs keyword [Arguments] @{args} Log to console -------- : FOR ${item} IN @{args} \ Log to console ${item} Kwargs keyword [Arguments] &{kwargs} Log to console -------- : FOR ${item} IN @{kwargs.items()} \ Log to console ${item Calculate "${expression}" and Check Equals "${expected}" Calculate and Check Equals ${expression} ${expected}
看到Calcalate and Check Equals 關鍵字引數中設定了引數預設值, 呼叫該關鍵字的時候可以傳入0-2個引數,如Second Case中的。
命令列robot執行case的時候, 加-t引數可以指定case名執行。robot -t “Second Case” demo.robot。 執行second case結果如下
需要關鍵字接受任意數量的引數,只需將keyword的Arguments 資料型別為列表或字典,他們分別對應python的*args,和**kwargs語法,
例如我們keywords中的Varargs keyword和Kwargs keyword,用一個for迴圈將輸入的引數列印到console,執行third case結果如。
根據實際需求可以多種引數組合使用,類似這種 [Arguments] ${req} ${opt}=42 @{others} &{kwothers}也可以。這就不舉例了。 RF中還可以將引數嵌入到關鍵字中,這麼寫的好處可以建立自然語言的關鍵字,描述出明確的目的,從而提高testcase的可讀性。
例如第四個關鍵字 Calculate "${expression}" and Check Equals "${expected}”。使用的時候直接把引數替換進去就可以了,像Fourth Case中這樣使用。
值得注意的是,一旦將引數嵌入到關鍵字,該關鍵字就不再支援[Arguments]傳入引數了。
引號不是必須的,但是如果是Select ${team} ${player}這樣的關鍵字,呼叫的時候可能會出問題 (例如:Select Spurs Tim Duncan),無法判斷team是Spurs 還是Spurs Tim。簡單的解決方式就是中間插點兒東西(例如:Select ${team} --- ${player}
我的處理方式就是簡單粗暴所有的變數都加“”。