gpt4 book ai didi

php - 如何通过 Codeception 在命令行中使用动态 url 进行验收测试

转载 作者:行者123 更新时间:2023-12-03 00:11:33 25 4
gpt4 key购买 nike

我有两个 php env,目前我可以为不同的 url 运行类似的东西

modules:
enabled:
- WebDriver
- AcceptanceHelper
config:
WebDriver:
url: 'http://localhost/'
browser: 'phantomjs'
env:
alpha:
modules:
config:
WebDriver:
url: 'http://myalphasite/'
beta:
modules:
config:
WebDriver:
url: 'http://mybetasite/'

目前我使用命令运行它们codecept run --env alpha ,或 codecept run --env beta

有没有办法在运行 codeception 测试时从命令行提供 url,例如 codecept run site=alpha.test.com,然后从配置内部获取它而不是硬编码 url?

最佳答案

我遇到了同样的问题,并且扩展了 Codeception 以支持动态服务器 URL。

我还可以通过以下代码通过 php 调用我的 Codeceptions-Test:

chdir('myPathTo: tests/codeception');
$codeception = new \Wrapper\Codecept([
'steps' => true,
'verbosity' => 1,
// some other options (see Codeception docs/sources)
]);
$codeception->setBaseUrl('myServerUrl');
$codeception->run('myTestSuiteName');

这是我在 Codeception 中所做的扩展:

<?php

namespace Wrapper;

use Codeception\Codecept as CodeceptOriginal;

class Codecept extends CodeceptOriginal {

private $baseUrl = null;

public function runSuite($settings, $suite, $test = null) {
if ($settings['modules']['enabled']) {
foreach ($settings['modules']['enabled'] as $key => $module) {
if (is_array($module) && $module['PhpBrowser']['url']) {
$module['PhpBrowser']['url'] = $this->getBaseUrl();
$settings['modules']['enabled'][$key] = $module;
}
}
}
return parent::runSuite($settings, $suite, $test = null);
}

public function getBaseUrl() {
return $this->baseUrl;
}

public function setBaseUrl($baseUrl) {
$this->baseUrl = $baseUrl;
return $this;
}

}

在您的情况下,您需要一些额外的编程才能将所有 cli 选项放入 codecpetion 中(//参见其他一些选项)。

或者

您可以扩展 Codecption cli 接口(interface)来实例化 Wrapper/Codecept,而不是原始的 Codecept。

希望这对您有所帮助,并让您了解如何解决问题。

关于php - 如何通过 Codeception 在命令行中使用动态 url 进行验收测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29653104/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com