Php Codeception—在多个环境中运行验收测试
我正在尝试使用不同的环境为多个站点运行测试。这些网站都遵循相同的模板,所以一个通用测试就足以涵盖所有这些网站 在acceptance.suite.yml文件中,我使用不同的URL设置了所有环境 在我的Cest文件中,我有一堆在特定环境中调用的函数,并设置了一些变量,这些变量可能在站点、登录信息等之间有所不同 然后,我为每个环境调用相同的函数 在运行验收测试时,我使用多个'--env foo'告诉它要运行哪些环境 这一切都是可行的,但我有20多个站点要测试,这意味着每次我想要运行测试时都要编写20'-env-foo'。似乎有点过分Php Codeception—在多个环境中运行验收测试,php,codeception,Php,Codeception,我正在尝试使用不同的环境为多个站点运行测试。这些网站都遵循相同的模板,所以一个通用测试就足以涵盖所有这些网站 在acceptance.suite.yml文件中,我使用不同的URL设置了所有环境 在我的Cest文件中,我有一堆在特定环境中调用的函数,并设置了一些变量,这些变量可能在站点、登录信息等之间有所不同 然后,我为每个环境调用相同的函数 在运行验收测试时,我使用多个'--env foo'告诉它要运行哪些环境 这一切都是可行的,但我有20多个站点要测试,这意味着每次我想要运行测试时都要编写20
有更好的办法吗 如果已使用composer安装codeception,则可以编辑以下文件: 供应商/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;
}
进入:
现在,它应该通过运行“codecept run”来运行所有环境。您可以根据需要修改功能,例如,如果指定,则仅使用特定环境,否则运行所有环境
实际上,如果将最后一位更改为以下内容,则它将使用指定的环境(如果使用--env进行设置),否则将全部执行:
foreach ($environments as $env => $config) {
if ($selectedEnvironments) {
if (!in_array($env, $selectedEnvironments)) {
continue;
}
}
如果有人知道如何在不直接编辑文件的情况下干净地重写Codecept.php中的核心函数,我很想听听,因为这当然是一个更干净的解决方案:)
foreach ($environments as $env => $config) {
if ($selectedEnvironments) {
if (!in_array($env, $selectedEnvironments)) {
continue;
}
}