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

Joh*_*Dee 9 codeception

我总是在 Codeception YML 文件中看到这种事情:

modules:
    enabled:
        - PhpBrowser:
            url: '%URL%'
Run Code Online (Sandbox Code Playgroud)

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

Nak*_*lda 13

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

\n\n
\n

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

\n\n

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

\n\n

示例:从环境加载参数:

\n\n
params:\n    - env # load params from environment vars\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
params:\n    - app/config/parameters.yml\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
params:\n    - config/params.php\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
params:\n    - .env\n    - .env.testing\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

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

\n\n
modules:\n   enabled:\n      - WebDriver:\n         url: http://example.com\n         host: \'%SAUCE_USER%:%SAUCE_KEY%@ondemand.saucelabs.com\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

参数对于为 Db 模块提供连接凭据也很有用(取自 Laravel\xe2\x80\x99s .env 文件):

\n\n
modules:\n    enabled:\n        - Db:\n            dsn: "mysql:host=%DB_HOST%;dbname=%DB_DATABASE%"\n            user: "%DB_USERNAME%"\n            password: "%DB_PASSWORD%"\n
Run Code Online (Sandbox Code Playgroud)\n
\n\n

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

\n\n
URL=http://example.org codecept run\n
Run Code Online (Sandbox Code Playgroud)\n\n

或者

\n\n
export URL=http://example.org\ncodecept run\n
Run Code Online (Sandbox Code Playgroud)\n\n

上面的示例适用于 Bash,如果您使用不同的 shell,您可能需要执行其他操作。

\n