Codeception - Тестирование
Установка
Описание
Фреймворк для автоматического тестирования веб-приложений на PHP — Codeception живет и развивается. Но в этот раз вместо скупой порции новостей я бы хотел представить вам первый скринкаст в котором показаны азы работы с Codeception. Если вы только читали про Codeception, то вам обязательно стоит взглянуть на него в действии. Ну а если не читали, но у вас есть веб-сайт, который бы вы хотели протестировать — тоже взгляните.
Создание
$ ./vendor/bin/codecept bootstrap ./frontend $ ./vendor/bin/codecept bootstrap ./vendor/mirocow/yii2-notification
Создает папку tests с конфигурационными файлами
$ ls -la ./vendor/mirocow/yii2-notification/tests total 12 drwxr-xr-x 1 vagrant vagrant 374 Jul 7 22:34 . drwxr-xr-x 1 vagrant vagrant 476 Jul 7 22:34 .. drwxr-xr-x 1 vagrant vagrant 68 Jul 7 22:34 acceptance -rw-r--r-- 1 vagrant vagrant 347 Jul 7 22:34 acceptance.suite.yml drwxr-xr-x 1 vagrant vagrant 102 Jul 7 22:34 _data drwxr-xr-x 1 vagrant vagrant 68 Jul 7 22:34 functional -rw-r--r-- 1 vagrant vagrant 360 Jul 7 22:34 functional.suite.yml drwxr-xr-x 1 vagrant vagrant 102 Jul 7 22:34 _output drwxr-xr-x 1 vagrant vagrant 238 Jul 7 22:34 _support drwxr-xr-x 1 vagrant vagrant 102 Jul 7 22:43 unit -rw-r--r-- 1 vagrant vagrant 161 Jul 7 22:34 unit.suite.yml
В которой будут создыны 3 кипа конфигураций: unit, functional, acceptance
Описание
- acceptance.suite.yml - Настройки для приемочного тестирования
- functional.suite.yml - Настройки для функционального тестирования
- unit.suite.yml - Настройки для юнит/модульного тестирования
- _support - Методы доступные через интерфейс $I->
- _output - В этой папке содержатся сгенерированные тестом файлы
- _data - В этойпапке содержатся загружаемые тестом файлы (Пример: $I->attachFile('input[@type="file"]', 'prices.xls');)
Проверка и настройка тестовго окружения
Проверка конфигурации
$ ./vendor/bin/codecept -c ./vendor/mirocow/yii2-queue config:validate
$ cd /app $ ls -la ./tests/codeception/common/ total 16 drwxr-xr-x 1 vagrant vagrant 340 Jul 7 21:39 . drwxr-xr-x 1 vagrant vagrant 340 Jul 7 21:39 .. -rwxr-xr-x 1 vagrant vagrant 548 Jul 5 13:53 _bootstrap.php -rwxr-xr-x 1 vagrant vagrant 266 Jul 5 13:53 codeception.yml drwxr-xr-x 1 vagrant vagrant 102 Jul 7 21:39 _data -rwxr-xr-x 1 vagrant vagrant 141 Jul 5 13:53 .gitignore drwxr-xr-x 1 vagrant vagrant 102 Jul 5 13:53 _output drwxr-xr-x 1 vagrant vagrant 136 Jul 7 22:09 _support drwxr-xr-x 1 vagrant vagrant 136 Jul 7 22:11 unit -rwxr-xr-x 1 vagrant vagrant 152 Jul 5 13:53 unit.suite.yml
- Где /app - папка проекта на vagrant виртуальной машине
- codeception.yml - Базовый конфигурационный файл
- unit.suite.yml - Настройки запускаемой конфигурации
Запуск тестов
$ codecept run ./tests/acceptance/MyCept.php
Параметры
-с
- Папка с тестами конфигационным файлом или файл конфигурации-g
slow - Запуск теста из укзанной группы-o
"settings: shuffle: true" - Переопределение конфигурационных настроек-v
--vv
--vvv
---steps
-
Наборы тестов / Suite
Юнит тесты / unit
проверяет что отдельный модуль кода работает верно
- frontend/tests/unit
- backend/tests/unit
- common/tests/unit
Предварительная сборка тестов
$ ./vendor/bin/codecept build
Создание
$ ./tests/codeception/common generate:test unit UserTest -vvv
Запуск
Запуск всех тестов из выбранной апликации
$ ./vendor/bin/codecept -c ./common run unit -vvv $ ./vendor/bin/codecept -c ./frontend run unit -vvv $ ./vendor/bin/codecept -c ./backend run unit -vvv
- Где -с - папка с конфигурационным файлом codeception.yml (относительно текущей папки ./tests )
- -v - Минимальный уровень логирования
- -vv - Средний уровень логирования
- -vvv - Маскимальный уовень логирования
Запуск указанных тестов
$ cd /app $ ./vendor/bin/codecept -c ./common run unit models/LoginFormTest.php
- Где /app - папка с нашим проектом
- Где тест models/LoginFormTest.php лежит в common/tests/unit (Так-как используется Sute из common/tests/unit.suite.yml)
Аналогично запускаются тесты из frontend и backend
Функциональные тесты / functional
проверяет пользовательские сценарии через эмуляцию браузера
- frontend/tests/functional
- backend/tests/functional
Предварительная сборка тестов
$ ./vendor/bin/codecept build
Создание
$ ./vendor/bin/codecept -c ./frontend generate:cept functional UserFormCept $ ./vendor/bin/codecept -c ./frontend generate:cest functional UserFormCept
<?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');
<?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'); } }
Запуск
Запуск всех тестов из выбранной апликации
$ ./vendor/bin/codecept -c ./frontend run functional -vvv $ ./vendor/bin/codecept -c ./backend run functional -vvv
Запуск указанных тестов
$ cd /app $ ./vendor/bin/codecept -c ./backend run functional LoginCest
- Где /app - папка с нашим проектом
- Где тест LoginCest.php лежит в ./backend/tests/functional (Так-как используется Sute из ./common/tests/functional.suite.yml)
- Имя теста 2-я разными способами (LoginCest, LoginCest.php | LoginCept, LoginCept.php)
Приёмочное тестирование / acceptance
проверяет пользовательские сценарии в браузере
- frontend/tests/acceptance
Предварительная сборка тестов
$ ./vendor/bin/codecept build
Запуск
$
Модули
Модули codeception распологаются в папке ./vendor/codeception/base/src/Codeception/Module
Компоненты
$ composer require "codeception/base": "^2.2.3", $ composer require "codeception/codeception=2.1.*" $ composer require "codeception/specify=*" $ composer require "codeception/verify=*"
- codeception/base - Codeception distribution with minimal set of dependencies
- codeception/codeception - Full-stack testing PHP framework
- codeception/specify - BDD style code blocks for PHPUnit / Codeception
- codeception/verify - BDD Assertions for PHPUnit and Codeception
Статьи / Документация
Сервисы для тестирования
Travis
nano .travis.yml