我想将第二个 yml 文件包含到我的 api.suite.yml 中。我能以某种方式做到吗?
我的 api.suite.yml 看起来像这样
actor: ApiTester
modules:
enabled:
- Asserts
- REST:
url:
port: 80
depends: PhpBrowser
part: Json
- Db:
dsn: 'mysql:host=<MY HOST>;dbname=<MY DBNAME>'
user: '<MY USER>'
password: '<MY PASSWORD>'
一切都工作得很好,但我想将数据库信用移动到单独的 yml 文件中并将其添加到 .gitignore 中。
我该怎么做?我已经花了2个小时,在文档中找不到它。 有一个关于扩展的提及:这里https://codeception.com/docs/reference/Configuration#extends
我尝试使用它,但它似乎对我不起作用。
我想,这是不可能的。 YAML 不支持“导入”或“要求”之类的内容。
你可以做什么:在单独的 env 文件中使用变量。
为此你需要
vlucas/phpdotenv
composer require vlucas/phpdotenv
然后将变量添加到您的 yaml 文件中:
# Api.suite.yml
actor: ApiTester
modules:
enabled:
- Asserts
- REST:
url:
port: 80
depends: PhpBrowser
part: Json
- Db:
dsn: %DSN%
user: %USERNAME%
password: %PASSWORD%
然后将这些参数添加到您的
codeception.yml
中,这使您能够在项目中使用环境变量和环境文件。
# codeception.yml
params:
- env
- .env.local
将变量放入
.env.local
文件中并通过 .gitignore
忽略它。
# .env.local
USERNAME=<username>
PASSWORD=<password>
DSN=<mysql-dsn>
享受吧!
不幸的是 yml/yaml 不支持这一点。但如果您想在同一个 yaml 文件中的多个位置使用某些代码块,那么您可以考虑如下所示
namespace: Tests
support_namespace: Support
# Define an anchor for your WebDriver configuration
modules:
enabled:
- &modules
WebDriver:
url: 'https://awesomesite.com'
browser: chrome
port: 9515
window_size: 1920x1080
capabilities:
unexpectedAlertBehaviour: 'accept'
acceptInsecureCerts: true
chromeOptions:
args:
- "--headless"
- "--disable-gpu"
- "disable-infobars"
# Define your test suites
suites:
TestFolder1:
actor: AcceptanceTester
path: TestFolder1
# Include the WebDriver configuration using an alias
<<: *modules
some_other_config_option: value
TestFolder2:
actor: AcceptanceTester
path: TestFolder2
# Include the WebDriver configuration using an alias
<<: *modules
some_other_config_option: value
paths:
tests: tests
output: tests/_output
data: tests/Support/Data
support: tests/Support
envs: tests/_envs
actor_suffix: Tester
extensions:
enabled:
- Codeception\Extension\RunFailed
如您所见,我用
modules
制作了 - &modules
的别名,并使用 <<: *modules
的值。这种别名技术可以减少您的代码。我不知道你是否正在寻找这样的东西。不管怎样谢谢你