如何将列表列表作为参数提供给机器人框架测试模板
How to feed a list of lists as an argument into a Robot Framework Test Template
我的 "do any combination" 测试有模板关键字,其中 ${labels} 是一个列表,${versions} 是列表的列表:
TT Process Instance Version Search
[Arguments] ${labels} ${versions}
Login
Process Instance Version Search ${labels} ${versions}
然后我创建一个测试套件文件并放置以下内容:
*** Settings ***
Test Template TT Process Instance Version Search
*** Variables ***
@{ProcessVersions} = ${Process0} ${Process1} ${Process2}
@{SingleVersion} = ${Process2}
@{Process0} = 1 2
@{Process1} = 3 test_version
@{Process2} = 1
@{SingleProcessLabel} = Label1
@{ProcessLabels} = Label1 Label2 Label3
*** Test Cases ***
Single Instance Version for a Single Process ${SingleProcessLabel} ${SingleVersion}
Distinct Instance Versions for Multiple Processes ${ProcessLabels} ${ProcessVersions}
我得到的错误信息是"List variable '@{versions}' has no item in index 0."
我对此进行了很多尝试,包括使用嵌入式参数,而我设法修复它的唯一方法是直接提供 $versions 作为全局变量。我的代码适用于全局变量,但我必须手动更改数据。我真正需要的是实施数据驱动设计。
非常感谢任何建议和帮助!
来自对您所写问题的评论:
The question is: How to feed list of lists as an argument into a Test template?
答案记录在机器人框架用户指南中标题为 List Variables 的部分中。调用关键字时,如果在变量前加一个$
,变量会被当作一个列表object。如果使用 @
,变量将被拆分为多个参数。
在编写接受参数的关键字时,也是如此。如果您想要单个参数,请使用 $
作为参数变量。如果要将所有参数收集为列表,请使用 @
.
这是一个显示几个示例的测试:
*** Variables ***
@{numbers} 1 2 3
@{letters} a b c d
@{listoflists} ${numbers} ${letters}
*** Keywords ***
Accept list of lists as single arg
[Arguments] ${arguments}
length should be ${arguments} 2
length should be ${arguments[0]} 3
length should be ${arguments[1]} 4
Accept multiple args
[Arguments] @{arguments}
length should be ${arguments} 2
length should be ${arguments[0]} 3
length should be ${arguments[1]} 4
*** Test cases ***
Pass list of lists as single argument
Accept list of lists as single arg ${listoflists}
Pass list of lists as multiple arguments
Accept multiple args @{listoflists}
Accept multiple args ${numbers} ${letters}
我的 "do any combination" 测试有模板关键字,其中 ${labels} 是一个列表,${versions} 是列表的列表:
TT Process Instance Version Search
[Arguments] ${labels} ${versions}
Login
Process Instance Version Search ${labels} ${versions}
然后我创建一个测试套件文件并放置以下内容:
*** Settings ***
Test Template TT Process Instance Version Search
*** Variables ***
@{ProcessVersions} = ${Process0} ${Process1} ${Process2}
@{SingleVersion} = ${Process2}
@{Process0} = 1 2
@{Process1} = 3 test_version
@{Process2} = 1
@{SingleProcessLabel} = Label1
@{ProcessLabels} = Label1 Label2 Label3
*** Test Cases ***
Single Instance Version for a Single Process ${SingleProcessLabel} ${SingleVersion}
Distinct Instance Versions for Multiple Processes ${ProcessLabels} ${ProcessVersions}
我得到的错误信息是"List variable '@{versions}' has no item in index 0."
我对此进行了很多尝试,包括使用嵌入式参数,而我设法修复它的唯一方法是直接提供 $versions 作为全局变量。我的代码适用于全局变量,但我必须手动更改数据。我真正需要的是实施数据驱动设计。
非常感谢任何建议和帮助!
来自对您所写问题的评论:
The question is: How to feed list of lists as an argument into a Test template?
答案记录在机器人框架用户指南中标题为 List Variables 的部分中。调用关键字时,如果在变量前加一个$
,变量会被当作一个列表object。如果使用 @
,变量将被拆分为多个参数。
在编写接受参数的关键字时,也是如此。如果您想要单个参数,请使用 $
作为参数变量。如果要将所有参数收集为列表,请使用 @
.
这是一个显示几个示例的测试:
*** Variables ***
@{numbers} 1 2 3
@{letters} a b c d
@{listoflists} ${numbers} ${letters}
*** Keywords ***
Accept list of lists as single arg
[Arguments] ${arguments}
length should be ${arguments} 2
length should be ${arguments[0]} 3
length should be ${arguments[1]} 4
Accept multiple args
[Arguments] @{arguments}
length should be ${arguments} 2
length should be ${arguments[0]} 3
length should be ${arguments[1]} 4
*** Test cases ***
Pass list of lists as single argument
Accept list of lists as single arg ${listoflists}
Pass list of lists as multiple arguments
Accept multiple args @{listoflists}
Accept multiple args ${numbers} ${letters}