Показать страницуИстория страницыСсылки сюдаCopy this pageExport to MarkdownODT преобразованиеНаверх Вы загрузили старую версию документа! Сохранив её, вы создадите новую текущую версию с этим содержимым. Медиафайлы{{tag>php test codeception}} ====== Codeception - Тестирование ====== * https://github.com/Codeception/Codeception * http://allframeworks.ru/codeception :!: ===== Установка ===== * http://codeception.com/pear/ ===== Описание ===== Фреймворк для автоматического тестирования веб-приложений на PHP — Codeception живет и развивается. Но в этот раз вместо скупой порции новостей я бы хотел представить вам первый скринкаст в котором показаны азы работы с Codeception. Если вы только читали про Codeception, то вам обязательно стоит взглянуть на него в действии. Ну а если не читали, но у вас есть веб-сайт, который бы вы хотели протестировать — тоже взгляните. ==== Создание ==== <code bash> $ ./vendor/bin/codecept bootstrap ./frontend $ ./vendor/bin/codecept bootstrap ./vendor/mirocow/yii2-notification </code> Создает папку tests с конфигурационными файлами <code bash> $ 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 </code> В которой будут создыны 3 кипа конфигураций: **unit**, **functional**, **acceptance** === Описание === * acceptance.suite.yml - Настройки для приемочного тестирования * functional.suite.yml - Настройки для функционального тестирования * unit.suite.yml - Настройки для юнит/модульного тестирования * _support - Методы доступные через интерфейс <text>$I-></text> * _output - В этой папке содержатся сгенерированные тестом файлы * _data - В этойпапке содержатся загружаемые тестом файлы (Пример: <text>$I->attachFile('input[@type="file"]', 'prices.xls');</text>) ==== Проверка и настройка тестовго окружения ==== Проверка конфигурации <code bash> $ ./vendor/bin/codecept -c ./vendor/mirocow/yii2-queue config:validate </code> <code bash> $ 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 </code> * Где /app - папка проекта на vagrant виртуальной машине * codeception.yml - Базовый конфигурационный файл * unit.suite.yml - Настройки запускаемой конфигурации ===== Запуск тестов ===== <note> Обязательно после run уазать **конфигурацию/Sute** запускаемого теста Базовые конфигурации: **unit**, **functional**, **acceptance** Конфигурация/Sute берется из корня папки с запускаемыми скриптами и носит название ***.suite.yml**. В этой же папке должен находится базовый конфигурационный файл </note> <note tip>Если указан полный путь до тесового файла, то не надо указывать suite<code bash>$ codecept run ./tests/acceptance/MyCept.php</code></note> [[https://codeception.com/docs/reference/Commands#Run|Подробнее...]] ==== Параметры ==== * ''-с'' - Папка с тестами конфигационным файлом или файл конфигурации * ''-g'' slow - Запуск теста из укзанной группы * ''-o'' "settings: shuffle: true" - Переопределение конфигурационных настроек * ''-v'' - * ''-vv'' - * ''-vvv'' - * ''--steps'' - ===== Наборы тестов / Suite ===== ==== Юнит тесты / unit ==== проверяет что отдельный модуль кода работает верно * frontend/tests/unit * backend/tests/unit * common/tests/unit Предварительная сборка тестов <code bash> $ ./vendor/bin/codecept build </code> === Создание === <code bash> $ ./tests/codeception/common generate:test unit UserTest -vvv </code> === Запуск === Запуск всех тестов из выбранной апликации <code bash> $ ./vendor/bin/codecept -c ./common run unit -vvv $ ./vendor/bin/codecept -c ./frontend run unit -vvv $ ./vendor/bin/codecept -c ./backend run unit -vvv </code> * Где -с - папка с конфигурационным файлом codeception.yml (относительно текущей папки ./tests ) * -v - Минимальный уровень логирования * -vv - Средний уровень логирования * -vvv - Маскимальный уовень логирования Запуск указанных тестов <code bash> $ cd /app $ ./vendor/bin/codecept -c ./common run unit models/LoginFormTest.php </code> * Где /app - папка с нашим проектом * Где тест models/LoginFormTest.php лежит в common/tests/unit (Так-как используется Sute из common/tests/unit.suite.yml) Аналогично запускаются тесты из frontend и backend ==== Функциональные тесты / functional ==== проверяет пользовательские сценарии через эмуляцию браузера * frontend/tests/functional * backend/tests/functional Предварительная сборка тестов <code bash> $ ./vendor/bin/codecept build </code> === Создание === <code bash> $ ./vendor/bin/codecept -c ./frontend generate:cept functional UserFormCept $ ./vendor/bin/codecept -c ./frontend generate:cest functional UserFormCept </code> <note tip>Cept - Записывается в виде сценария</note> <code php> <?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'); </code> <note tip>Cest - Записывается в виде PHP класса</note> <code php> <?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'); } } </code> === Запуск === Запуск всех тестов из выбранной апликации <code bash> $ ./vendor/bin/codecept -c ./frontend run functional -vvv $ ./vendor/bin/codecept -c ./backend run functional -vvv </code> Запуск указанных тестов <code bash> $ cd /app $ ./vendor/bin/codecept -c ./backend run functional LoginCest </code> * Где /app - папка с нашим проектом * Где тест LoginCest.php лежит в ./backend/tests/functional (Так-как используется Sute из ./common/tests/functional.suite.yml) * Имя теста 2-я разными способами (LoginCest, LoginCest.php | LoginCept, LoginCept.php) ==== Приёмочное тестирование / acceptance ==== проверяет пользовательские сценарии в браузере * frontend/tests/acceptance Предварительная сборка тестов <code bash> $ ./vendor/bin/codecept build </code> === Запуск === <code bash> $ </code> ===== Модули ===== Модули codeception распологаются в папке **./vendor/codeception/base/src/Codeception/Module** ===== Компоненты ===== <code bash> $ composer require "codeception/base": "^2.2.3", $ composer require "codeception/codeception=2.1.*" $ composer require "codeception/specify=*" $ composer require "codeception/verify=*" </code> * 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 ===== Статьи / Документация ===== * https://github.com/yupe/codeception-guide-ru :!: * http://allframeworks.ru/codeception :!: * https://p0vidl0.info/yii2-api-guides/guide-ru-test-overview.html * https://russianpenguin.ru/%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BF%D0%BE/ * http://www.jetsource.ru/scripts/stats_and_tutorials/codeception_tests * http://habrahabr.ru/post/136477/ * [[http://www.jetsource.ru/scripts/stats_and_tutorials/codeception_tests|ТЕСТИРОВАНИЕ ПРОЕКТА С CODECEPTION]] * http://itfap.s2z.ru/read/Modulqnoe_testirovanie_povedeniya_Yii2_s_pomoschqyu_Codeception ===== Видео ===== * http://habrahabr.ru/post/146662/ * http://code.tutsplus.com/courses/modern-testing-in-php-with-codeception * http://www.youtube.com/watch?v=nuzEJzuJJJ4 :!: * https://www.youtube.com/watch?v=XGNoiPqa6PI СохранитьПросмотрРазличияОтменить Сводка изменений Примечание: редактируя эту страницу, вы соглашаетесь на использование своего вклада на условиях следующей лицензии: CC0 1.0 Universal