在开发数据库而不是测试数据库上进行 Codeception 验收测试 运行

Codeception Acceptance test running on the dev database instead of the test database

我有一个 Yii2 项目,它使用名为 frontend 的数据库,但我想 运行 在另一个名为 的数据库上进行验收测试密码。问题是当我 运行 测试时它仍然使用 frontend 数据库而不是 codeception 数据库。是否可以 运行 在不同的数据库上进行验收测试,还是我做错了什么?

acceptance.suite.yml

class_name: AcceptanceTester
modules:
  enabled: [ WebDriver, Db ]

  config:
    Db:
        dsn: 'mysql:host=localhost;dbname=codeception'
        user: 'root'
        password: ''
        dump: _data/dump.sql
        populate: true
        cleanup: false
    WebDriver:
        url: 'http://localhost:8080/myproject/frontend/web'
        browser: 'firefox'

env:
  chrome:
        modules:
                config:
                        WebDriver:
                                  browser: 'chrome'

frontend\codeception.yml

namespace: tests\codeception\frontend
actor: Tester
paths:
  tests: .
  log: _output
  data: _data
  helpers: _support
settings:
  bootstrap: _bootstrap.php
  suite_class: \PHPUnit_Framework_TestSuite
  colors: true
  memory_limit: 1024M
  log: true
config:
  test_entry_url: http://localhost:8080/myproject/web/index-test.php

如果您使用的是 PhpBrowser 或 WebDriver 模块,它们会通过 HTTP 向被测网站发出请求,而 Codeception 无法控制网站的配置和执行。

只有功能测试(例如使用 Yii2 module)才能更改应用程序的配置。

configFile required - the path to the application config file. File should be configured for test environment and return configuration array.

当然可以运行针对测试数据库进行验收测试!

但是,当运行在不同的 url 上使用测试数据库时,您必须将网站配置为使用测试数据库,并让 Codeception 运行 测试针对测试 url。我用 Yii1 和一些自定义框架做到了这一点。

我看到你已经在运行针对索引-test.php 进行解码。在 Yii1 中,有一个 test.php 配置文件,您可以在其中设置测试数据库的连接,我假设 Yii2 以类似的方式工作。

所以在Yii2中寻找配置测试数据库的文件,就可以开始了!