1. 程式人生 > >Robotframework 入門教程(四)

Robotframework 入門教程(四)

==關鍵字 2==

關鍵字的預設引數,及接受任意數量引數關鍵字。
修改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}
),
我的處理方式就是簡單粗暴所有的變數都加“”。