Python 如何在robot框架中将列表作为命令行参数传递。?

Python 如何在robot框架中将列表作为命令行参数传递。?,python,robotframework,Python,Robotframework,我试图使用-v选项将列表作为命令行参数传递给robot脚本。因为这不是直接支持的,所以我正在尝试一些解决方法,比如 robot -v list_arg:a__b__c -E space:_ sample.robot 这在一定程度上完成了这项工作,因为当我将值登录到控制台时,可以看到以空格分隔的值。像 abc。 但是,我无法迭代使用FOR的所有列表成员。我只看到一个项目(“abc”)正在迭代 在robot框架中,还有其他优雅的方法通过命令行传递列表吗?虽然我不太喜欢它,但我能够从String库中

我试图使用-v选项将列表作为命令行参数传递给robot脚本。因为这不是直接支持的,所以我正在尝试一些解决方法,比如

robot -v list_arg:a__b__c -E space:_ sample.robot
这在一定程度上完成了这项工作,因为当我将值登录到控制台时,可以看到以空格分隔的值。像
abc
。 但是,我无法迭代使用FOR的所有列表成员。我只看到一个项目(“abc”)正在迭代


在robot框架中,还有其他优雅的方法通过命令行传递列表吗?

虽然我不太喜欢它,但我能够从
String
库中迭代通过
Split 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\u vars:1\u 2-E space:u-t“CLI中的变量列表”。

当使用将数据结构传递到robot框架时,考虑到您已经在将一个结构转换为与命令行兼容的结构,可能是一个更好的选择。添加变量文件使用
-vc:/path/to/file.ext
语法

大致有两种方法:

  • 静态:这是一个文本文件,包含您要查找的变量结构。这可以有两种格式:

    • Python:使用正则变量语法声明变量结构
    • YAML:使用它可以创建机器人框架列表、字典和字符串
  • 动态:在此场景中,机器人变量由Python代码生成并返回:

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

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