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}),
我的处理方式就是简单粗暴所有的变量都加“”。

猜你喜欢

转载自blog.csdn.net/be5yond/article/details/54755004