2013-06-28 5 views
1

Я начал изучать codeception и я написал небольшой фрагмент кода для приемочного тестирования, который заключается в следующем:входов сканирования в codeception

<?php 
$I = new WebGuy($scenario); 
$I->amOnPage('account/sign_in'); 
$I->fillField('login_identity','[email protected]'); 
$I->fillField('login_password','don'); 
$I->click('submit'); 
$I->see('The Captcha Answer field is required.'); 
?> 

Как вы можете видеть имя пользователя и пароль жестко закодировано. Возможно ли, что я могу сканировать вход (а именно login_identity и login_password) от пользователя. Если да, пожалуйста, объясните мне, как это сделать.

ответ

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('[email protected]', 'don', $I); 
    $I->click('submit'); 
    $I->see('The Captcha Answer field is required.'); 
?> 

Теперь, чтобы ответить на ваш вопрос, вы можете предотвратить имя пользователя и пароль которые зашиты в тестах, сохранив их в .yml файл в _data/директории. Используйте Yaml::parse(__DIR__ . '/../_data/login.yml'), подавая содержимое в массив. Я бы предложил добавить парсер yaml в помощник, чтобы вы могли включить его во всем мире во всех своих тестах, а это значит, что вам нужно изменить имя пользователя и пароль в login.yml, чтобы изменить значения, используемые во всех ваших тестах. Таким образом, вы также можете иметь несколько имен пользователей и паролей, и вы скоро поймете, что данные для входа - это не единственные значения, которые вы можете сохранить.

+0

это блестящее предложение, но некоторые, как я не знаю, как его реализовать @Tro, пожалуйста, помогите мне, так как я получил файл accept.suite.yml и два URL-адреса для работы в одном модуле env, он работает, когда i есть только один пользователь для двух разных URL-адресов, но проблема возникает, когда я должен запускать два разных URL-адреса для двух разных пользователей, тогда как я могу сказать, какие тесты изменил пользователь и теперь запускает url2 с user2 и url1 с user1. – shab