If you use Codeception installed using composer, install this module with the following command:
composer require --dev codeception/module-sequence
Alternatively, you can enable Sequence
module in suite configuration file and run
codecept init upgrade4
This module was bundled with Codeception 2 and 3, but since version 4 it is necessary to install it separately.
Some modules are bundled with PHAR files.
Warning. Using PHAR file and composer in the same project can cause unexpected errors.
Sequence solves data cleanup issue in alternative way. Instead cleaning up the database between tests, you can use generated unique names, that should not conflict. When you create article on a site, for instance, you can assign it a unique name and then check it.
This module has no actions, but introduces a function sq
for generating unique sequences within test and sqs
for generating unique sequences across suite.
Function sq
generates sequence, the only parameter it takes, is id. You can get back to previously generated sequence using that id:
<?php sq('post1'); // post1_521fbc63021eb sq('post2'); // post2_521fbc6302266 sq('post1'); // post1_521fbc63021eb
Example:
<?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')
Populating Database:
<?php for ($i = 0; $i<10; $i++) { $I->haveInDatabase('users', array('login' => sq("user$i"), 'email' => sq("user$i").'@email.com'); } ?>
Cest Suite tests:
<?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'); } } ?>
By default produces unique string with param as a prefix:
sq('user') => 'user_876asd8as87a'
This behavior can be configured using prefix
config param.
Old style sequences:
Sequence: prefix: '_'
Using id param inside prefix:
Sequence: prefix: '{id}.'
© 2011 Michael Bodnarchuk and contributors
Licensed under the MIT License.
https://codeception.com/docs/modules/Sequence