Фреймворк для автоматического тестирования веб-приложений на 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
Проверка конфигурации
$ ./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
$ codecept run ./tests/acceptance/MyCept.php
-с
- Папка с тестами конфигационным файлом или файл конфигурации
-g
slow - Запуск теста из укзанной группы
-o
"settings: shuffle: true" - Переопределение конфигурационных настроек
-v
-
-vv
-
-vvv
-
–steps
-
проверяет что отдельный модуль кода работает верно
Предварительная сборка тестов
$ ./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
Запуск указанных тестов
$ cd /app $ ./vendor/bin/codecept -c ./common run unit models/LoginFormTest.php
Аналогично запускаются тесты из frontend и backend
проверяет пользовательские сценарии через эмуляцию браузера
Предварительная сборка тестов
$ ./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
проверяет пользовательские сценарии в браузере
Предварительная сборка тестов
$ ./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=*"
nano .travis.yml