Codeception testing framework got significant improvements during last week. The first and the major one is that you don't even need PEAR and Composer to execute tests. Only one file
codecept.phar required. This might save your time and mind of your testers.
So Installation is much simplier now:
Execute it with PHP
Now you can start generating a test suite with
php codecept.phar bootstrap or execute existing tests with
php codecept.phar run.
Documentation section was created. New section Reference was added. There you can review Codeception commands and configuration values.
But the most cool stuff is new module for testing web services!
This API modules keeps simple manner in describing tests. Take a look at sample REST test.
<?php $I = new ApiGuy($scenario); $I->wantTo('create a new user by API'); $I->amHttpAuthenticated('davert','123456'); $I->haveHttpHeader('Content-Type','application/x-www-form-urlencoded'); $I->sendPOST('/users', array('name' => 'davert' )); $I->seeResponseCodeIs(200); $I->seeResponseIsJson(); $I->seeResponseContainsJson(array('result' => 'ok'));
And here goes a sample SOAP test:
<?php use \Codeception\Utils\Soap; $I = new ApiGuy($scenario); $I->wantTo('create a new user thorough API'); $I->haveSoapHeader('Auth', array('token' => '123123')); $I->sendSoapRequest('CreateUser', Soap::request() ->User ->Name->val('davert')->parent() ->Email->val('email@example.com'); ); $I->seeSoapResponseIncludes(Soap::response()->result->val(1));
Ok, the one thing you may have noticed. We are working with JSON in first case and XML in second. But there is no JSON or XML in code! Well, we could have used it, but we didn't. Just because we can use PHP to set data in this formats. Json is built from PHP arrays and for XML is used jQuery-like styled XMLBuilder class. But you could possibly add a raw json or XMl into your tests. No problems with that!
Modules themselves are already documented and tested. Soon a complete guide on WebService API testing will be added.
The other thing worth to mention is new finalizers in test scenarios. If you need to execute code after test is finished and you don't want to put it in helper use the
$scenario->finilize method. See it's usage example in new Manual Cleanup section of Guides.
This is Codeception 1.0.11. Download new version to run tests or update
$ pear install codeception/Codeception
or via Composer
$ php composer.phar update