跟Python一样,robot支持用户写两种可变长参数的keyword,对应Python语法的(*kwargs)和(**kwargs)。
1、单值可变长参数
在Robot Framework中,可变长参数通常使用@{args}语法来表示。这种语法允许你将不定数量的参数传递给关键字。下面是一个简单的例子,演示了如何在Robot Framework中使用可变长参数
*** Settings ***
Library Collections
*** Test Cases ***
Example Test
# 调用关键字,传递可变长参数
${result} Run Keyword And Return Status Example Keyword arg1 arg2 arg3
# 打印结果
Log Result: ${result}
*** Keywords ***
Example Keyword
[Arguments] @{args}
Log Received arguments: ${args}
${length} Get Length ${args}
Log Number of arguments: ${length}
在上面的例子中,我们定义了一个测试用例 Example Test 和一个关键字 Example Keyword。关键字使用 [Arguments] @{args} 定义了可变长参数。在测试用例中,我们调用了 Example Keyword 并传递了三个参数:arg1、arg2、arg3。
关键字内部,我们使用 Log 关键字打印了接收到的参数 ${args},并使用 Get Length 关键字计算了参数的数量,并将结果打印出来。
运行这个例子,你将看到测试用例输出中包含了传递的参数和参数的数量。
注意:Collections库中的 Get Length 关键字用于获取列表的长度,这里用来展示如何处理可变长参数的数量。你可以根据实际需要选择其他方式来处理可变长参数。
2、自由命名的可变长参数
在Robot Framework中,可以使用&{kwargs}语法表示自由命名的可变长关键字参数。这样的参数允许你在调用关键字时传递任意数量的关键字参数。下面是一个例子,演示了如何在Robot Framework中使用自由命名的可变长关键字参数:
*** Settings ***
Library Collections
*** Test Cases ***
Example Test
# 调用关键字,传递自由命名的可变长关键字参数
${result} Run Keyword And Return Status Example Keyword arg1=value1 arg2=value2 arg3=value3
# 打印结果
Log Result: ${result}
*** Keywords ***
Example Keyword
[Arguments] &{kwargs}
Log Received keyword arguments: ${kwargs}
${num_args} Get Length ${kwargs}
Log Number of keyword arguments: ${num_args}
在上面的例子中,我们定义了一个测试用例 Example Test 和一个关键字 Example Keyword。关键字使用 [Arguments] &{kwargs} 定义了自由命名的可变长关键字参数。在测试用例中,我们调用了 Example Keyword 并传递了三个关键字参数:arg1、arg2、arg3,分别对应值value1、value2、value3。
关键字内部,我们使用 Log 关键字打印了接收到的关键字参数 ${kwargs},并使用 Get Length 关键字计算了参数的数量,并将结果打印出来。
运行这个例子,你将看到测试用例输出中包含了传递的关键字参数和关键字参数的数量。
这样,你可以在关键字内部处理任意数量的关键字参数,而不需要提前知道参数的名称。
3、两种可变长参数的混合使用
用例一,这是Process库中的Run Process关键字。它的签名是command, *arguments, **configuration,这意味着它接受要执行的命令(command)、其参数作为可变数量的参数(*arguments),最后是可选的配置参数作为自由命名参数(**configuration)。
*** Test Cases ***
Free Named Arguments
Run Process program.py arg1 arg2 cwd=/home/user
Run Process program.py argument shell=True env=${ENVIRON}
用例二,我们创建一个用于运行上述示例中program.py的Keyword。这个Run Program接受所有位置参数和命名参数,并将它们连同要执行的命令的名称一起传递给Run Process。
*** Test Cases ***
Free Named Arguments
Run Program arg1 arg2 cwd=/home/user
Run Program argument shell=True env=${ENVIRON}
*** Keywords ***
Run Program
[Arguments] @{args} &{config}
Run Process program.py @{args} &{config}
更多参考:
http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#variable-number-of-arguments