【问题标题】:docker run passing environment variables with whitespacesdocker run 使用空格传递环境变量
【发布时间】:2017-09-20 06:05:15
【问题描述】:

我有一个 Dockerfile 正在尝试调用 Robot Framework 测试运行程序。我将所需的命令行参数(例如测试用例、测试套件、包含的标签、排除的标签等)作为环境变量传递给 Dockerfile。有时我的命令行参数包含空格。例如,假设我的测试用例是Define Something,我的测试套件是MyWebsite。如果我将环境设置为 TESTCASE='Define Sponsor'TESTSUITE=MyWebsite,我会从 Robot Framework 测试运行程序中收到此错误:

[ ERROR ] Suite 'Scenarios' contains no tests named ''Define or Something'' in suite 'MyWebsite'.

我尝试了多种方法来传递我的环境:

  1. 使用环境文件:

    docker run --env-file test/test.env

    其中test/test.env 包含:

    TESTSUITE="MyWebsite"

    TESTCASE="Define Sponsor"

  2. 在 shell 中设置它们:

    TESTSUITE="MyWebsite"

    TESTCASE="Define Sponsor"

  3. 将它们设置在Dockerfile:

    ENV TESTSUITE="MyWebsite"

    ENV TESTCASE="Define Sponsor"

他们都返回了提到的错误。

【问题讨论】:

  • 你试过TESTCASE="DefineSponsor"TESTCASE="Define_Sponsor"吗?要进行更多诊断,我认为我们需要看看您实际上是如何调用机器人的。
  • @BryanOakley,是的;我试过TESTCASE="DefineSponsor"。它工作得很好。

标签: dockerfile robotframework


【解决方案1】:

这里的错误有点明显,尤其是这部分:contains no tests named ''Define or Something''

注意Define OR Something。 CLI 使用空格作为分隔符,因此它认为您正在尝试选择测试用例DefineSomething。相反,键入Define_Something,Robot Framework 会正确地将下划线转换为空格,但在评估 CLI 及其分隔符之后,应该会正确选择您的测试用例 Define Something

这是记录在here

可能的下划线被替换为空格,完全小写的名称是标题大小写。例如,some_tests.html 变为 Some Tests,My_test_directory 变为 My test 目录。

【讨论】:

  • 我不知道什么是机器人框架,但是在 Docker 本地是否有解决方法?
猜你喜欢
  • 2017-01-22
  • 1970-01-01
  • 2022-08-16
  • 2018-09-18
  • 2018-04-29
  • 2023-03-03
  • 2021-04-17
  • 1970-01-01
  • 2018-12-02
相关资源
最近更新 更多