我正在尝试使用不同的环境来运行多个站点的测试。这些网站都遵循相同的模板,因此通用测试足以涵盖所有这些模板。
在我的acceptance.suite.yml文件中,我使用不同的网址设置了所有环境。
在我的Cest文件中,我有一大堆在特定环境中调用的函数,并设置一些可能在站点之间不同的变量,登录信息等。
然后我为每个环境调用相同的函数。
当我运行验收测试时,我告诉它使用多个'--env foo'运行哪些环境。
这一切都有效,但我有超过20个网站要测试,这意味着每次我想要运行测试时都要写20'--env foo'。似乎有点多了。
有更好的方法吗?
答案 0 :(得分:0)
如果您使用composer安装了代码,则可以编辑以下文件:
供应商/ codeception / codeception / SRC / Codeception / Codecept.php
导航到运行功能(第125行左右),然后更改以下内容:
if (!$selectedEnvironments or empty($environments)) {
$this->runSuite($settings, $suite, $test);
return;
}
foreach ($environments as $env => $config) {
if (!in_array($env, $selectedEnvironments)) {
continue;
}
分为:
if (/*!$selectedEnvironments or*/empty($environments)) {
$this->runSuite($settings, $suite, $test);
return;
}
foreach ($environments as $env => $config) {
/*if (!in_array($env, $selectedEnvironments)) {
continue;
}*/
现在它应该通过运行" codecept run"来运行所有环境。您可以根据需要修改功能,例如,仅在指定时使用特定环境,或者运行所有环境。
实际上,如果将最后一位更改为以下位,则使用指定的环境(如果使用--env设置),否则执行all:
foreach ($environments as $env => $config) {
if ($selectedEnvironments) {
if (!in_array($env, $selectedEnvironments)) {
continue;
}
}
如果有人知道如何干净地重写Codecept.php中的核心功能而不直接编辑文件,我很乐意听到,因为那当然是一个更清洁的解决方案:)