可变个数的参数
关键字可以接受任意个数的参数。参数可以由必须输入的参数和带有默认值的参数组成,但是所谓的可变参数一般要放在最后。通常文档会在这些参数名字前加一个*号,比如*varargs,以示区别。JAVA库的实现依然与之不同。
举例说明Remove Files 和Join Paths关键字分别带有*paths和base参数和*parts参数。前者可带有任意数量参数,而后者则要求至少有一个参数。
Keywords with variable number of arguments |
||||
Test Case |
Action |
Argument |
Argument |
Argument |
Example |
Remove Files |
${TEMPDIR}/f1.txt |
${TEMPDIR}/f2.txt |
${TEMPDIR}/f3.txt |
@{paths} = |
Join Paths |
${TEMPDIR} |
f1.txt |
|
... |
f2.txt |
f3.txt |
f4.txt |
命名参数
当一个关键字接受多于一个有默认值的参数时,只对最后一个参数进行重新赋值是不可能的。例如,一个关键字有三个参数:arg1=a, arg2=b, arg3=c,其中arg1和arg2最终会变成空字符串,而不是它们的默认值。
用位置参数覆盖默认值
Test Case |
Action |
Argument |
Argument |
Argument |
Positional Arguments |
[Documentation] |
1st and 2nd |
argument get |
empty strings |
Example Keyword |
|
|
value |
为了更容易地修改部分有默认值的参数,我们在Robot Framework 2.5中增加了新的语法。有了这些语法,就能通过“argname=value”的格式直接修改参数的默认值。而需要使用默认值的参数就可以不用去理会了。下面的例子使用了与前面例子中一样的关键字来说明这种语法。在这个例子中,未指定的参数将获得他们的默认值。
使用命名参数的关键字
Test Case |
Action |
Argument |
Argument |
Argument |
Named Arguments |
[Documentation] |
Not specified |
arguments get |
default values |
Example Keyword |
arg3=value |
|
|
|
Example Keyword |
arg2=xxx |
arg3=yyy |
|
当没有参数被排除的时候,命名变量语法也能够很自然接收参数的默认值。相比只给出一个值,这种方法也使得参数的含义更加清晰。尽管用这种方法来命名参数是不可能的。此外,先给出命名参数再给出可变参数是也不可能的。
命名参数功能最大的限制是目前只能用于用户关键字和继承了Python的静态库API、混合库API的关键字库。未来框架可能会支持JAVA库和动态库API(使用可变参数),在此之前,我们需要用用户关键字来包裹不兼容的关键字(来解决java库和动态库的关键字不支持变参的问题)。