我在acceptance.suite.yml配置文件中有环境配置。 其中一个参数是语言。我需要知道实际测试代码中的这个参数值才能正确地驱动测试步骤。
acceptance.suite.yml配置内容:
class_name: WebGuy
modules:
enabled:
- WebDriver
- WebHelper
- Db
config:
WebDriver:
browser: firefox
env:
eng:
modules:
config:
WebDriver:
url: 'localhost'
lang: en
esp:
modules:
config:
WebDriver:
url: 'localhost'
lang: es
如何获取语言参数值?
答案 0 :(得分:6)
我遇到了同样的问题,并在Codeception论坛上找到了帮助。以下是访问配置内容as mentioned by user Dan的方法。
$config = \Codeception\Configuration::config();
$apiSettings = \Codeception\Configuration::suiteSettings('api', $config);
答案 1 :(得分:1)
@George的答案将为您提供所有设置,但不是所选环境。
我努力使用baseUrl
获取当前环境,但发现这可以很好地满足我的需求。我得到了// Default to no env
$env = '';
// If we have argv settings, go through each one
if (isset($_SERVER['argv'])) {
foreach($_SERVER['argv'] as $key => $value) {
// If the current value is --env and we have the next one, then take the next one as the setting
if ($value == '--env' && isset($_SERVER['argv'][$key + 1])) {
$env = $_SERVER['argv'][$key + 1];
}
}
}
// By this point we either found an --env and have its value, or we
// didn't and can assume we don't have one set.
// We look in a slightly difference place depending on whether we
// have an env or not
if ( empty( $env ) ) {
$baseUrl = $apiSettings['modules']['config']['baseUrl'];
} else {
$baseUrl = $apiSettings['env'][$env]['modules']['config']['baseUrl'];
}
值,因此包含了经过测试的代码,而不是为" lang"根据问题但不测试它。它应该只是改变挑选值的数组。
Es--> France---_-2011 --> import.csv
Es--> Italy---_-2012 --> files --> import.csv
Es -->France---_-2012 --> files --> recent --> import.csv
答案 2 :(得分:1)
使用Scenario,您将获得活跃的“env”,当您获得它时,阅读配置很容易。以下示例。您可以以Cept和Cest格式访问\ Codeception \ Scenario。在Cept中,$ scenario变量默认可用,而在Cest中你应该通过依赖注入来检索它。
public function someTest(AcceptanceTester $I, \Codeception\Scenario $scenario) {
$current_env = $scenario->current('env');
$config = \Codeception\Configuration::suiteSettings("acceptance", \Codeception\Configuration::config());
$current_language = $config['env'][$current_env]['modules']['config']['WebDriver']['lang'];
}
答案 3 :(得分:0)
我找到了一个完美的解决方案。 我把它放到_Bootstrap.php文件中:
# Checking which language parameter is provided
$lang = $_SERVER['argv'];
$language = $lang[4];
答案 4 :(得分:0)
无法直接从测试文件中访问配置值。
但是可以通过帮助文件访问它(已确认使用Acceptance.php)。
在Helper文件中添加了:
public function getConfigUrl(){
return $this->getModule('WebDriver')->_getConfig('url');
}
在测试文件中,它是通过以下方式访问的:
$I->getConfigUrl();
请注意,在我的* .suite.yml文件中,我有以下配置:
paths:
helpers: tests/_support
modules:
enabled:
- \Helper\Acceptance
- WebDriver
我的帖子的更多详情:http://phptest.club/t/how-to-grab-module-config-values/1616/2