Codeception – это фреймворк тестирования PHP, использующий подход BDD (behavior-driven development). Он прост в установке и использовании и не требует ничего, кроме PHP. Он позволяет автоматизировать три уровня:
- Acceptance (UI)
- Functional
- API (Integration)
Дополнительные возможности
- Может быть интегрирован с Selenium Webdriver
- Поддерживается Symphony2, Laravel4, YII, Phalcon, Zend и другими PHP фреймворками.
- BDD-стиль написания тестов.
- Тестирование API (Rest, Soap, XML-RPC).
- HTML-, XML-, JSON-отчеты.
- Параллельное выполнение
Установка и настройка PHP и Codeception
- Скачайте PHP с http://windows.php.net/download/.
- Разархивируйте папку PHP и сохраните ее, например, в “D:\Program Files\PHP”.
- Установите переменную PHP в “system environment”.
- Для проверки можно открыть консоль и проверить версию PHP помощью команды “php -v”.
Вообще, чтобы исключить проблемы установки PHP, предлагаю скачать XAMPP, который после установки автоматически устанавливает PHP и прописывает системную переменную. Но потребность в запуске этого сервера отсутствует.
- Скачайте файл Codecep.phar с http://codeception.com/builds в соответствии с вашей версией PHP.
- Сохраните файл в месте проекта.
- Откройте окно консоли и выполните команду:
- После этого вы должны увидеть папку “tests” и файл “codeception.yml” в корне папки проекта.
Написание теста и конфигурация запуска
- Для создания первого теста выполните команду в корне проекта:
1 |
php codecept.phar generate:cept acceptance FirstTestCept |
Созданный тест FirstTestCept должен появится в папке “tests\acceptance”.
- Откройте “acceptance.suite.yml” и внесите настройки, как показано ниже :
Обратите внимание, что структура и иерархия очень важна. По ссылке параметра url можно увидеть, с каким сайтом мы будем работать.
- Внесите следующий код в файл тестов “tests\acceptance\FirstTestCept.php”:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
<?php $I = new AcceptanceTester($scenario); $I->wantTo('Test Flights to City'); $I->maximizeWindow(); $I->amOnPage('/en-DE/flights-to-berlin'); $I->see('Berlin - Tegel ( TXL )'); $I->seeInFormFields('form[id=booking_form]', [ 'language_name' => 'English_en', 'site_edition' => 'en-DE', 'bookingmask_widget_id' => 'bookingmask-widget-stageoffer', 'bookingmask_widget_dateformat' => '', 'outboundDate' => '', 'returnDate' => '', 'oneway' => '0', ]); $I->seeInField(['id' => 'airline_identifier'], 'ab'); $I->click('//*[@id="select2-AirportFrom-container"]/span'); $I->fillField("//input[@class='select2-search__field']",'mia'); $I->pressKey("//input[@class='select2-search__field']", WebDriverKeys::ENTER); $I->see('Miami FL ( MIA )'); $I->see('Berlin - Tegel ( TXL )'); $I->click('//*[@id="select2-AirportFrom-container"]'); $I->fillField("//input[@class='select2-search__field']",'dus'); $I->click("//li[contains(@class,'select2-results__option')][.='Dusseldorf ( DUS )']"); $I->click('#DateDeparture'); $I->click("//table[contains(@class,'ui-datepicker-calendar')]//tr[last()]//td[not(contains(@class,'ui-datepicker-unselectable'))][last()]"); $I->click('#DateReturnicon'); $I->click("//table[contains(@class,'ui-datepicker-calendar')]//tr[1]//td[not(contains(@class,'ui-datepicker-unselectable'))][1]"); $I->grabAttributeFrom("//input[@id='DateDeparture']", 'value'); $I->click('//*[@id="booking_form"]/div[5]/div'); $I->selectOption("#adults", 3); $I->selectOption("#Children", 2); $I->selectOption("#infants", 1); $I->click('//*[@id="booking_form"]/div[5]/div'); $I->click('#submit_btn'); ?> |
Запуск тестов
Для запуска тестов нужно выполнить следующую команду:
1 |
php codecept.phar run |
Для детализации шагов в консоли:
1 |
php codecept.phar run acceptance --steps |
Для запуска всех приемочных (acceptance) тестов:
1 |
php codecept.phar run acceptance |
Чтобы запустить только один тест выполните:
1 |
php codecept.phar run acceptance FirstTestCept.php |
Отчеты
Для генерации отчетов нужно выполнить следующую команду:
1 |
php codecept.phar run --html |
Отчет можно найти здесь “tests\_output”.