Последовательность
Установка
Если вы используете Codeception, установленный через composer, установите этот модуль следующей командой:
composer require --dev codeception/module-sequence
В качестве альтернативы, вы можете включить Sequence модуль в файле конфигурации набора тестов и запустить
codecept init upgrade4
Этот модуль был включён в Codeception 2 и 3, но начиная с версии 4 его необходимо устанавливать отдельно.
Некоторые модули поставляются с файлами PHAR.
Предупреждение. Использование файлов PHAR и composer в одном проекте может привести к непредвиденным ошибкам.
Описание
Последовательность решает проблему очистки данных альтернативным способом. Вместо очистки базы данных между тестами, вы можете использовать сгенерированные уникальные имена, которые не должны конфликтовать. Например, при создании статьи на сайте, вы можете назначить ей уникальное имя и затем проверить её.
Этот модуль не имеет действий, но вводит функцию sq для генерации уникальных последовательностей внутри теста и sqs для генерации уникальных последовательностей по всему набору тестов.
Использование
Функция sq генерирует последовательность, единственным параметром которой является идентификатор. Вы можете вернуться к ранее сгенерированной последовательности, используя этот идентификатор:
<?php
sq('post1'); // post1_521fbc63021eb
sq('post2'); // post2_521fbc6302266
sq('post1'); // post1_521fbc63021eb Пример:
<?php
$I->wantTo('create article');
$I->click('New Article');
$I->fillField('Title', sq('Article'));
$I->fillField('Body', 'Demo article with Lorem Ipsum');
$I->click('save');
$I->see(sq('Article') ,'#articles') Заполнение базы данных:
<?php
for ($i = 0; $i<10; $i++) {
$I->haveInDatabase('users', array('login' => sq("user$i"), 'email' => sq("user$i").'@email.com');
}
?> Тесты набора Cest:
<?php
class UserTest
{
public function createUser(AcceptanceTester $I)
{
$I->createUser(sqs('user') . '@mailserver.com', sqs('login'), sqs('pwd'));
}
public function checkEmail(AcceptanceTester $I)
{
$I->seeInEmailTo(sqs('user') . '@mailserver.com', sqs('login'));
}
public function removeUser(AcceptanceTester $I)
{
$I->removeUser(sqs('user') . '@mailserver.com');
}
}
?> Настройка
По умолчанию генерирует уникальную строку с параметром в качестве префикса:
sq('user') => 'user_876asd8as87a' Это поведение можно настроить, используя параметр конфигурации prefix.
Последовательности старого стиля:
Sequence:
prefix: '_' Использование параметра id внутри префикса:
Sequence:
prefix: '{id}.' Действия
© 2011 Michael Bodnarchuk and contributors
Licensed under the MIT License.
https://codeception.com/docs/modules/Sequence