我正在寻找一种从命令行覆盖测试的基本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: {}
我得到一个错误:
因此,当我使用此
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");
最佳答案
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/