1

コードセプションの学習を開始し、次のような受け入れテスト用の小さなコードを書きました。

<?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);
        }
    }
?>

accept.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 のユーザー名とパスワードを変更するだけで、すべてのテストで使用される値を変更できます。この方法で複数のユーザー名とパスワードを使用することもできます。保存できる値はログインの詳細だけではないことにすぐに気付くでしょう。

于 2013-07-04T14:58:10.417 に答える