首先,在整个测试过程中可能会经常使用登录例程,因此我建议将其抽象为辅助类。
<?php
// loginHelper.php
class loginHelper {
function login($username, $password, $I) {
$I->fillField('login_identity', $username);
$I->fillField('login_password', $password);
}
}
?>
您需要将 loginHelper 作为模块包含在您的acceptance.suite.yml 中启用并将其保存在_helpers/ 目录中。现在我们可以在其余的验收测试中自由使用登录功能。
<?php
$I = new WebGuy($scenario);
$I->amOnPage('account/sign_in');
login('me_vamshi@yahoo.com', 'don', $I);
$I->click('submit');
$I->see('The Captcha Answer field is required.');
?>
现在回答您的问题,您可以通过将用户名和密码保存在 _data/ 目录中的 .yml 文件中来防止将用户名和密码硬编码到测试中。使用Yaml::parse(__DIR__ . '/../_data/login.yml')
,将内容送入数组。我建议也将 yaml 解析器放入帮助程序中,这样您就可以在所有测试中全局包含它,这意味着您只需更改 login.yml 中的用户名和密码即可更改所有测试中使用的值。您还可以通过这种方式拥有多个用户名和密码,并且您很快就会意识到登录详细信息并不是您可以存储的唯一值。