Codeception,如何分割yml文件?

问题描述 投票:0回答:2

我想将第二个 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

我尝试使用它,但它似乎对我不起作用。

php yaml codeception
2个回答
0
投票

我想,这是不可能的。 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>

享受吧!


0
投票

不幸的是 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
的值。这种别名技术可以减少您的代码。我不知道你是否正在寻找这样的东西。不管怎样谢谢你

© www.soinside.com 2019 - 2024. All rights reserved.