==关键字 2==
关键字的默认参数,及接受任意数量参数关键字。
修改demo.robot 如下:
修改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结果如下
命令行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结果如。
例如我们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}),
我的处理方式就是简单粗暴所有的变量都加“”。
例如第四个关键字 Calculate "${expression}" and Check Equals "${expected}”。使用的时候直接把参数替换进去就可以了,像Fourth Case中这样使用。
值得注意的是,一旦将参数嵌入到关键字,该关键字就不再支持[Arguments]传入参数了。
引号不是必须的, 但是如果是Select ${team} ${player}这样的关键字,调用的时候可能会出问题 (例如:Select Spurs Tim Duncan),无法判断team是Spurs 还是Spurs Tim。简单的解决方式就是中间插点儿东西(例如:Select ${team} --- ${player}),
我的处理方式就是简单粗暴所有的变量都加“”。