我正在尝试使用-v选项将列表作为命令行参数传递给机器人脚本。由于这不是直接支持我正在尝试一些解决方法,如
robot -v list_arg:a__b__c -E space:_ sample.robot
这部分完成了工作,因为当我将它们登录到控制台时,我可以看到空格分隔值。像
a b c
。
但是我无法使用FOR迭代所有列表成员。我只看到一个项目(" a b c")被迭代。
在机器人框架中是否还有其他优雅的方法可以通过命令行传递列表。?
答案 0 :(得分:4)
虽然我不喜欢它,但我能够遍历来自Split String
库的String
创建的列表。
*** Settings ***
Library String
*** Test Cases ***
List Of Variables From CLI
@{list_of_vars} Split String ${my_vars}
:FOR ${var} IN @{list_of_vars}
\ Log ${var} WARN
robot -v my_vars:1_2 -E space:_ -t "List Of Variables From CLI" .
答案 1 :(得分:1)
当考虑到您已经将一个结构转换为兼容命令行的结构时,使用Variable Files将数据结构传递给Robot Framework可能是更好的选择。添加变量文件使用-V c:/path/to/file.ext
语法。
大致有两种方法:
静态:这是一个包含您要搜索的变量结构的文本文件。这可以采用两种格式:
动态:在这种情况下,Python代码会生成并返回Robot变量:
get_variables(arg)
function是返回动态数量的变量或动态数据结构的最简单方法。 init()
基于给定的补充输入或全部动态生成。在大多数情况下,yaml结构是提供简洁的写入和维护输入文件的好方法:
string: Hello, world!
integer: 42
list:
- one
- two
dict:
one: yksi
two: kaksi
original: &org
item1: foo
item2: bar
reference
org: *org