我开始学习代码,我为验收测试编写了一小段代码,如下所示:
<?php
$I = new WebGuy($scenario);
$I->amOnPage('account/sign_in');
$I->fillField('login_identity','me_vamshi@yahoo.com');
$I->fillField('login_password','don');
$I->click('submit');
$I->see('The Captcha Answer field is required.');
?>
如您所见,用户名和密码是硬编码的。我是否可以从用户扫描输入(即login_identity和login_password)。如果是这样,请解释我这样做的程序。
答案 0 :(得分:2)
首先,在整个测试过程中很可能经常使用登录例程,因此我建议将其抽象为辅助类。
<?php
// loginHelper.php
class loginHelper {
function login($username, $password, $I) {
$I->fillField('login_identity', $username);
$I->fillField('login_password', $password);
}
}
?>
您需要在login.suite.yml中包含loginHelper作为模块,并将其保存在_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中的用户名和密码来更改所有测试中使用的值。您也可以通过这种方式拥有多个用户名和密码,您很快就会发现登录详细信息并不是您可以存储的唯一值。