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

时间:2018-09-02 09:42:35

标签: codeception

我正在寻找一种从命令行覆盖测试的基本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中,当我们运行特定的套件时,似乎无法覆盖配置值(我的英语不是很好,所以也许我误会了)。因此,我在acceptance.suite.yml文件中添加了一个环境:

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

上进行

在“传奇”帮助后进行编辑

当我使用此acceptance.suite.yml时:

actor: AcceptanceTester
modules:
  enabled:
      - WebDriver
  config:
    WebDriver:
      url: ''
      browser: ''

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

我收到错误消息:

enter image description here

因此,当我使用此acceptance.suite.yml时:

actor: AcceptanceTester
modules:
  enabled:
    - WebDriver
  config:
    WebDriver:
      url: ''
      browser: chrome

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

我遇到另一个错误:

enter image description here

如果我使用这个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)

enter image description here

我得到的网址是“数据:”,很奇怪... 为了获取网址,我在测试文件中添加了以下简单行:

$this->comment("I am on the url : " . $this->executeJS("return window.location.href") . "\n");

1 个答案:

答案 0 :(得分:0)

注:您需要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,但不确定是否确实需要)。