Skip to content

Instantly share code, notes, and snippets.

@kirilkirkov
Last active September 14, 2016 14:42
Show Gist options
  • Save kirilkirkov/1cbccaca6d3d0db4875746c6020b9fc9 to your computer and use it in GitHub Desktop.
Save kirilkirkov/1cbccaca6d3d0db4875746c6020b9fc9 to your computer and use it in GitHub Desktop.
Какво е codeception и как се използва?
Какво е?
- Codeception е php фреймуърк за правене на тестове за правилното изпълнение на програми/сайтове/форми..тн..
Как се инсталира?
- Може да се инсталира лесно с composer като се следват инструкцийте в сайта на codeception:
http://codeception.com/quickstart
Какво се предлага?
- Системата предлага unit, functional и acceptance тестове
* acceptance tests: този тип тестове е за проверка на текстове които се изобразяват на браузъра след
събмит на форми без достъп до проверки в базата или нещо по кода и тн.. Може да тества ajax заявки,
има най-малко влияние от промени по кода.
* functional tests: Те тестват web заявки (post, get), може да се тества какво връща сървъра както и проверки в базите.
* Unit tetst: Тестване на парчета код
Разлика на suffix-иде на файловете?
Cept е scenario-based формат, а Cest е клас базиран формат.
Cept пример:
<?php
$I = new AcceptanceTester($scenario);
$I->wantTo('log in as regular user');
$I->amOnPage('/login');
$I->fillField('Username','john');
$I->fillField('Password','secret');
$I->click('Login');
$I->see('Hello john');
Cest пример:
<?php
class UserCest
{
public function loginAsRegularUser(\AcceptanceTester $I)
{
$I->wantTo('log in as regular user');
$I->amOnPage('/login');
$I->fillField('Username','john');
$I->fillField('Password','secret');
$I->click('Login');
$I->see('Hello john');
}
}
(в Cest формата е хубаво, че могат да се добавят private функций които да бъдат полезни за нещо си..)
Архитектура на кода?
- В директорията /tests/ имаме 3 папки unit, functional и acceptance в които следва да се добавят всички тестове
- Имаме 3 файла с имена acceptance.suite.yml, functional.suite.yml, unit.suite.yml в които се добавя
конфигурацята за това какви модули ще използваме и към кой url ще работят тестовете
- Всеки файл в отделните директорий за вида тест който ще използваме трябва да завършва на Cept или друг suffix
Например: tests/acceptance/SigninCept.php
Команди?
- php codecept run - стартиране на всички тестове
- php codecept run acceptance - с последния аргумент посочваме кой вид тест да бъде пуснат
- php codecept run acceptance SigninCept.php - тук даваме конкретен тест а не целия suit
- php codecept run tests/acceptance/SigninCept.php - това е алтернатива на горния ред
Евенти?
Могат да се симулират кликове с маркиране на css, xpath, линкове, ид, класове..
Модули:
- За да правим връзка към базите при тест трябва да пунем db модула.
- WebDriver - модул за acceptance тестове
- WebBrawser - модул за емулиране на браузър
- Framework modules, PhpBrowser и WebDriver - не могат да бърдат използвани заедно!
* Писането на сценарий май не е лоша практика.
// Article by Kiril Kirkov
@kirilkirkov
Copy link
Author

kirilkirkov commented Sep 14, 2016

RESTful testing:

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'));

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment