我正在寻找一种从命令行覆盖测试的基本URL的方法。将来,我将测试很多网站,因此如果必须在acceptance.suite.yml文件的新环境中添加每个网站,这将非常麻烦。

目前,我的acceptance.suite.yml是:

actor: AcceptanceTester
modules:
    enabled:
        - WebDriver:
            url: http://foo.com
            browser: chrome

我看到我可以在运行命令中使用选项'override',但是即使我阅读了代码接收文档并浏览了帮助网站(例如stack overflox ..),我也找不到适合重写的好方法。有人能帮我吗?

当我打印所有配置时(通过./vendor/bin/concept),我得到:
Array
(
    actor => AcceptanceTester
    modules => Array
        (
            enabled => Array
                (
                    0 => Array
                        (
                            WebDriver => Array
                                (
                                    url => http://foo.foo
                                    browser => chrome
                                )
                        )
                    1 => \Helper\Acceptance
                )
            config => Array
                (
                )
            depends => Array
                (
                )
        )

我试过了:./vendor/bin/codecept run acceptance --steps -o 'modules: enabled: 0: WebDriver: url: http://faa.faa,但是测试曾经在http://foo.foo上运行

在此codeception issue post中,当我们运行特定的套件时,似乎无法覆盖config值(我的英语不是很好,所以也许我误会了)。所以我在acceptance.suite.yml文件中添加了一个env:
actor: AcceptanceTester
modules:
    enabled:
        - WebDriver:
            url: http://foo.foo
            browser: chrome
env:
    generic:
        modules:
            config:
                WebDriver:
                    url: http://faa.faa

我尝试了这些命令:
./vendor/bin/codecept run acceptance --env generic --steps -o 'env: generic: modules: config: WebDriver: url: http://faa.faa

./vendor/bin/codecept run acceptance --env generic --steps -o 'WebDriver: url: http://faa.faa
什么也没发生。我的测试总是在http://foo.foo

编辑后,“LEGION”帮助

当我使用此acceptance.suite.yml时:
actor: AcceptanceTester
modules:
  enabled:
      - WebDriver
  config:
    WebDriver:
      url: ''
      browser: ''

env:
  chrome:
    modules:
      config:
        WebDriver: {}

我得到一个错误:

Codeception,如何针对特定(或非特定)套件测试从命令行覆盖url?-LMLPHP

因此,当我使用此acceptance.suite.yml时:
actor: AcceptanceTester
modules:
  enabled:
    - WebDriver
  config:
    WebDriver:
      url: ''
      browser: chrome

env:
  chrome:
    modules:
      config:
        WebDriver: {}

我收到另一个错误:

Codeception,如何针对特定(或非特定)套件测试从命令行覆盖url?-LMLPHP

如果我使用此acceptance.suite.yml:
actor: AcceptanceTester
modules:
  enabled:
    - WebDriver
  config:
    WebDriver:
      url: ''
      browser: chrome

env:
  chrome:
    modules:
      config:
        WebDriver:
          url: 'http://foo.foo'
          browser: 'chrome'

没错! buuuUUUT!我不在正确的网址上x)

Codeception,如何针对特定(或非特定)套件测试从命令行覆盖url?-LMLPHP

我得到的网址是“数据:”,很奇怪...
为了获得网址,我在测试文件中添加了以下简单行:
$this->comment("I am on the url : " . $this->executeJS("return window.location.href") . "\n");

最佳答案

N.B:您需要Codeception 1.8或更高版本!在该版本存在漏洞之前。

如果版本> 1.8,它应该可以工作...您可以尝试如下编辑接受文件,看看是否有所更改:

actor: AcceptanceTester
modules:
    enabled:
        - WebDriver
    config:
        WebDriver:
            url: 'http://foo.foo/'
            browser: 'firefox'

env:
    chrome: #or watherver you want
         modules:
            config:
                WebDriver:
                    url: 'http://fuu.fuu/'
                    browser: 'chrome'

如下运行:
php vendor/bin/codecept run acceptance --env chrome

** 编辑 **

要从命令行传递url,您需要空的WebDriver配置:
actor: AcceptanceTester
    modules:
        enabled:
            - WebDriver
        config:
            WebDriver: {}
env:
    chrome: #or watherver you want
         modules:
            config:
                WebDriver:
                    url:'http://foo.foo'
                    browser:'firefox'

命令行:
./vendor/bin/codecept run acceptance --env chrome --steps -o 'WebDriver: url: \'http://faa.faa\' browser: \'chrome\''

(我通常将apex用于url和浏览器...但不确定是否确实需要)。

关于Codeception,如何针对特定(或非特定)套件测试从命令行覆盖url?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52135740/

10-13 04:30