温馨提示:本文翻译自stackoverflow.com,查看原文请点击:其他 - How do I pass environment variable to Codeception YML file from command line?
codeception

其他 - 如何从命令行将环境变量传递给Codeception YML文件?

发布于 2020-03-27 15:52:56

我一直在Codeception YML文件中看到这种情况:

modules:
    enabled:
        - PhpBrowser:
            url: '%URL%'

如何从命令行将“ URL”传递给Codeception?或任何其他方式!

查看更多

查看更多

提问者
John Dee
被浏览
66
Naktibalda 2020-01-31 16:28

它记录在https://codeception.com/docs/06-ModulesAndHelpers#Dynamic-Configuration-With-Parameters

可以从环境变量动态配置模块。参数存储应在params部分中的全局codeception.yml配置中指定。可以从环境变量,yaml(Symfony格式)、. env(Laravel格式),ini或php文件中加载参数。

使用全局配置文件codeception.yml的params部分来指定如何加载它们。您可以指定多个源来加载参数。

示例:从环境中加载参数:

params:
    - env # load params from environment vars

示例:从YAML文件(Symfony)加载参数:

params:
    - app/config/parameters.yml

示例:从php文件(Yii)加载参数

params:
    - config/params.php

示例:从.env文件(Laravel)加载参数:

params:
    - .env
    - .env.testing

加载后,参数变量可以用作模块配置值。使用以%包裹的变量名作为占位符,它将被其值替换。

假设我们要为云测试服务指定凭据。我们已经从环境中加载了SAUCE_USER和SAUCE_KEY变量,现在我们将它们的值传递到WebDriver的配置中:

modules:
   enabled:
      - WebDriver:
         url: http://example.com
         host: '%SAUCE_USER%:%SAUCE_KEY%@ondemand.saucelabs.com'

参数对于提供Db模块的连接凭据(从Laravel的.env文件获取)也很有用:

modules:
    enabled:
        - Db:
            dsn: "mysql:host=%DB_HOST%;dbname=%DB_DATABASE%"
            user: "%DB_USERNAME%"
            password: "%DB_PASSWORD%"

如果要在命令行中设置,可以这样设置:

URL=http://example.org codecept run

要么

export URL=http://example.org
codecept run

上面的示例与Bash一起使用,如果您使用其他Shell,则可能需要做其他事情。