可變個數的參數
關鍵字可以接受任意個數的參數。參數可以由必須輸入的參數和帶有默認值的參數組成,但是所謂的可變參數一般要放在最后。通常文檔會在這些參數名字前加一個*號,比如*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庫和動態庫的關鍵字不支持變參的問題)。
原文轉自:http://www.anti-gravitydesign.com