1

我开始学习 codeception,我写了一小段代码用于验收测试,如下所示:

<?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)。如果可以,请您解释一下这样做的程序。

4

1 回答 1

2

首先,在整个测试过程中可能会经常使用登录例程,因此我建议将其抽象为辅助类。

<?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 中的用户名和密码即可更改所有测试中使用的值。您还可以通过这种方式拥有多个用户名和密码,并且您很快就会意识到登录详细信息并不是您可以存储的唯一值。

于 2013-07-04T14:58:10.417 回答