Modern PHP Testing for everyone
Codeception is a modern full-stack testing framework for PHP.
Inspired by BDD, it provides an absolutely new way of writing acceptance, functional and even unit tests.
Powered by PHPUnit.
At Codeception we are glad to receive contributions from the community. If you want to send additions or fixes to the code or the documentation please check the Contributing guide.
At a Glance
Describe what you test and how you test it. Use PHP to write descriptions faster.
Run tests and see what actions were taken and what results were seen.
Sample acceptance test
<?php $I = new FunctionalTester($scenario); $I->wantTo('create wiki page'); $I->amOnPage('/'); $I->click('Pages'); $I->click('New'); $I->see('New Page'); $I->submitForm('form#new_page', array('title' => 'Tree of Life Movie Review','body' => "Next time don't let Hollywood create art-house!")); $I->see('page created'); // notice generated $I->see('Tree of Life Movie Review','h1'); // head of page of is our title $I->seeInCurrentUrl('pages/tree-of-life-movie-review'); // slug is generated $I->seeInDatabase('pages', array('title' => 'Tree of Life Movie Review')); // data is stored in database ?>
For unit testing you can stay on classic PHPUnit tests, as Codeception can run them too.
php composer.phar require "codeception/codeception"
Copy it into your project.
You can also make Codeception an executable and it put it into your
$PATH, for instance:
wget http://codeception.com/codecept.phar chmod +x codecept.phar sudo mv codecept.phar /usr/local/bin/codecept
You can then run Codecept in the command line using:
codecept run, etc
Run CLI utility:
After you successfully installed Codeception, run this command:
This will create a default directory structure and default test suites.
Documentation is included within the project. Look for it in the 'docs' directory.
(c) Michael Bodnarchuk "Davert"
docker run --rm -v $(pwd):/project codeception/codeception run acceptance -d
Had some trouble with Codeception Docker image, maybe because I am new to Codeception, but maybe this tip will help other: you need to bind mount the volume to the "project" docker folder. It seems that the Docker image is using it by default. Thus the command is something like this: docker run -it -v $(pwd):/project codeception/codeception bootstrap
Is it possible to specify different php version(s)?