【问题标题】:ROBOT framework: using environment variables in argument fileROBOT 框架:在参数文件中使用环境变量
【发布时间】:2022-02-11 18:15:50
【问题描述】:

这是我想要做的基本概要:

我想使用参数文件调用我的脚本。但是参数文件需要在路径的环境变量上工作。因此,例如,参数文件可能是:

args.robot

[ROBOT_HOME variable]/test1.robot
[ROBOT_HOME variable]/test2.robot
[ROBOT_HOME variable]/test3.robot

我会在环境级别定义ROBOT_HOME 变量:

$ export ROBOT_HOME=/path/to/tests/
$ pybot -A args.robot

args.robot 文件中[ROBOT_HOME variable] 的以下替换均无效:

  • $ROBOT_HOME
  • ${ROBOT_HOME}
  • %{ROBOT_HOME}

以下 pybot 命令均无效:

  • pybot -A args.robot
  • pybot -v ROBOT_HOME:$ROBOT_HOME -A args.robot

我正在尝试做的事情可能吗?

【问题讨论】:

  • 不确定this是否有帮助,请参阅。
  • @Rao 是的,我看了一下,没有看到任何关于这种事情的信息。

标签: robotframework


【解决方案1】:

@Rao 为这个问题提供了一个很好的解决方案。 documentation on arguments file 的最后一部分演示了如何以编程方式生成参数文件并将它们与单行代码一起使用。

generate_arguments.sh | robot --argumentfile STDIN
generate_arguments.sh | robot --name Example --argumentfile STDIN tests.robot

现在剩下的问题是generate_arguments.sh 是什么?我喜欢使用envsub,envsub 替换脚本中的环境变量(适用于 linux env)

envsubst '$HOME' < "argumentfile.txt" > "argumentfile.txt"
echo "argumentfile.txt"

运行该脚本的另一种可能性是:

generate_arguments.sh && robot --argumentfile "argumentfile.txt"

【讨论】:

    【解决方案2】:

    @xNok 解决方案可行,但不是很准确。您不能使用envsubst 命令重写文件。看看这个帖子。

    rewriting a file with "envsubst file" leaves it empty

    所以,基本上如果你想让它以这种方式工作,参数文件应该是这样的:

    export HOME='your/path'
    envsubst '${HOME}' < argumentfile.txt > argumentfile_tmp.txt && mv argumentfile_tmp.txt argumentfile.txt
    

    例如,“argumentfile.txt”看起来像这样:

    --variable PATH:${HOME}/some/sub/path
    

    然后按照@xNok 的建议,您可以这样运行脚本:

    generate_arguments.sh && robot --argumentfile "argumentfile.txt"
    

    请注意,此方法会覆盖“argumentfile.txt”。因此,每次您需要克隆源代码或其他选项是使用envsubst 写入临时文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-10
      • 2019-08-24
      • 2018-09-12
      • 2021-12-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多