Функциональные тесты

Всё про тестирование в Yii 2.0
Ответить
Myafk
Сообщения: 27
Зарегистрирован: 2016.03.01, 20:57

Функциональные тесты

Сообщение Myafk »

Доброго времени суток. Вопрос следующий, я пишу тесты для админ панели, написал один тест на логин, вопрос в следующем, как мне отнаследовать этот логин для остальных действий, то есть мне надо тестить функционал самой админки, но пользователь должен быть залогинен под админом, чтобы мог тестить функционал, то есть перед каждым тестом нужно выполнять процесс логина, а потом уже сам тест, код теста логина:

Код: Выделить всё

use tests\codeception\_pages\AdminLoginPage;

/* @var $scenario Codeception\Scenario */

$I = new FunctionalTester($scenario);
$I->wantTo('ensure login page works');

$loginPage = AdminLoginPage::openBy($I);
$I->see('Авторизация', 'h1');
$I->dontSeeElement('#admin-menu > li');
$I->amGoingTo('submit login form with no data');
$loginPage->login('', '');
$I->expectTo('see validations errors');
$I->see('Логин (e-mail) cannot be blank.', '.help-block');
$I->see('Пароль cannot be blank.', '.help-block');

$I->amGoingTo('try to login with wrong credentials');
$I->expectTo('see validations errors');
$loginPage->login('admin', 'wrong1');
$I->expectTo('see validations errors');
$I->see('Неправильный логин или пароль.', '.help-block');

$I->amGoingTo('try to login with correct credentials but not "Admin"');
$loginPage->login('user@test.ru', '111111');
$I->expectTo('see that user is logged');
$I->see('Неправильный логин или пароль.', '.help-block');

$I->amGoingTo('try to login with correct credentials');
$loginPage->login('admin@test.ru', '111111');
$I->expectTo('see that user is logged');
$I->seeElement('#admin-menu > li');
$I->dontSee('Авторизация', 'h1');
 
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Функциональные тесты

Сообщение ElisDN »

Либо в начале каждого теста вписывать:

Код: Выделить всё

$loginPage = AdminLoginPage::openBy($I);
$loginPage->login('admin@test.ru', 'admin'); 
Либо переписать тесты в cest-формат (с классами) и уже там добавить методы логина их наследовать как здесь.
Myafk
Сообщения: 27
Зарегистрирован: 2016.03.01, 20:57

Re: Функциональные тесты

Сообщение Myafk »

ElisDN писал(а):Либо в начале каждого теста вписывать:

Код: Выделить всё

$loginPage = AdminLoginPage::openBy($I);
$loginPage->login('admin@test.ru', 'admin');
Либо переписать тесты в cest-формат (с классами) и уже там добавить методы логина их наследовать как здесь.
Спасибо, сделаю классами, посмотрел у вас, есть методы loginAsAdmin и другие, а вот где вызов этих самых методов например в tests\codeception\functional\admin\UserCest? В комментариях у вас написано:

Код: Выделить всё

    /**
     * @before loginAsAdmin
     * @after logout
     */
 
Но где сам метод вызывается? Как-то евентом прописано?
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Функциональные тесты

Сообщение ElisDN »

Codeception парсит такие комментарии и вызывает методы. Можно и вручную вызывать $this->loginAsAdmin() и т.п.
Ответить