我正在寻找一种从命令行覆盖测试的基本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: {}
我收到错误消息:
因此,当我使用此acceptance.suite.yml
时:
actor: AcceptanceTester
modules:
enabled:
- WebDriver
config:
WebDriver:
url: ''
browser: chrome
env:
chrome:
modules:
config:
WebDriver: {}
我遇到另一个错误:
如果我使用这个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)
我得到的网址是“数据:”,很奇怪... 为了获取网址,我在测试文件中添加了以下简单行:
$this->comment("I am on the url : " . $this->executeJS("return window.location.href") . "\n");
答案 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,但不确定是否确实需要)。