如何在机器人框架中将列表作为命令行参数传递。

时间:2017-05-19 10:35:43

标签: python robotframework

我正在尝试使用-v选项将列表作为命令行参数传递给机器人脚本。由于这不是直接支持我正在尝试一些解决方法,如

robot -v list_arg:a__b__c -E space:_ sample.robot

这部分完成了工作,因为当我将它们登录到控制台时,我可以看到空格分隔值。像
a b c。 但是我无法使用FOR迭代所有列表成员。我只看到一个项目(" a b c")被迭代。

在机器人框架中是否还有其他优雅的方法可以通过命令行传递列表。?

2 个答案:

答案 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语法。

大致有两种方法:

  1. 静态:这是一个包含您要搜索的变量结构的文本文件。这可以采用两种格式:

    • Python :使用常规Python syntax变量语法声明变量结构
    • YAML :使用YAML syntax可能会创建机器人框架列表,字典和字符串。
  2. 动态:在这种情况下,Python代码会生成并返回Robot变量:

    • 简单Python函数:使用get_variables(arg) function是返回动态数量的变量或动态数据结构的最简单方法。
    • 动态Python类:使用variable class可以隐藏某些变量,有一组固定的变量,由init()基于给定的补充输入或全部动态生成。
  3. 在大多数情况下,yaml结构是提供简洁的写入和维护输入文件的好方法:

     string:   Hello, world!
     integer:  42
     list:
      - one
      - two
     dict:
      one: yksi
      two: kaksi
     original: &org
      item1: foo
      item2: bar
     reference
      org: *org