Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
php:codeception [2018/07/06 12:11] – [Юнит тесты / unit] mirocowphp:codeception [2018/11/12 19:19] (текущий) – [Travis] mirocow
Строка 4: Строка 4:
  
   * https://github.com/Codeception/Codeception   * https://github.com/Codeception/Codeception
 +  * http://allframeworks.ru/codeception :!:
  
 ===== Установка ===== ===== Установка =====
Строка 13: Строка 14:
 Фреймворк для автоматического тестирования веб-приложений на PHP — Codeception живет и развивается. Но в этот раз вместо скупой порции новостей я бы хотел представить вам первый скринкаст в котором показаны азы работы с Codeception. Если вы только читали про Codeception, то вам обязательно стоит взглянуть на него в действии. Ну а если не читали, но у вас есть веб-сайт, который бы вы хотели протестировать — тоже взгляните. Фреймворк для автоматического тестирования веб-приложений на PHP — Codeception живет и развивается. Но в этот раз вместо скупой порции новостей я бы хотел представить вам первый скринкаст в котором показаны азы работы с Codeception. Если вы только читали про Codeception, то вам обязательно стоит взглянуть на него в действии. Ну а если не читали, но у вас есть веб-сайт, который бы вы хотели протестировать — тоже взгляните.
  
-===== Yii2 тестирование =====+==== Создание ====
  
-==== Функциональные тесты functional ====+<code bash> 
 +$ ./vendor/bin/codecept bootstrap ./frontend 
 +$ ./vendor/bin/codecept bootstrap ./vendor/mirocow/yii2-notification 
 +</code>
  
-  * tests/codeception/backend/functional +Создает папку tests с конфигурационными файлами
-  * tests/codeception/frontend/functional +
-  * frontend/tests/functional +
-  * backend/tests/functional+
  
 <code bash> <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> </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 ==== ==== Юнит тесты / unit ====
Строка 30: Строка 104:
 проверяет что отдельный модуль кода работает верно проверяет что отдельный модуль кода работает верно
  
-  * tests/codeception/backend/unit 
-  * tests/codeception/common/unit 
-  * tests/codeception/console/unit 
-  * tests/codeception/frontend/unit 
   * frontend/tests/unit   * frontend/tests/unit
   * backend/tests/unit   * backend/tests/unit
   * common/tests/unit   * common/tests/unit
 +
 +Предварительная сборка тестов
  
 <code bash> <code bash>
-$+./vendor/bin/codecept build
 </code> </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 ==== ==== Приёмочное тестирование / acceptance ====
  
-  * tests/codeception/backend/acceptance +проверяет пользовательские сценарии в браузере 
-  * tests/codeception/frontend/acceptance+
   * frontend/tests/acceptance   * frontend/tests/acceptance
 +
 +Предварительная сборка тестов
  
 <code bash> <code bash>
-$+./vendor/bin/codecept build
 </code> </code>
  
-===== Статьи =====+=== Запуск ===
  
 +<code bash>
 +
 +</code>
 +
 +===== Модули =====
 +
 +Модули codeception распологаются в папке **[[https://github.com/marcovtwout/Codeception/tree/2.3/src/Codeception/Module|./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://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
  
 +===== Сервисы для тестирования =====
 +
 +==== Travis ====
 +
 +nano .travis.yml
 +<code>
 +</code>
 ===== Видео ===== ===== Видео =====
  
Строка 61: Строка 278:
   * http://code.tutsplus.com/courses/modern-testing-in-php-with-codeception   * http://code.tutsplus.com/courses/modern-testing-in-php-with-codeception
   * http://www.youtube.com/watch?v=nuzEJzuJJJ4 :!:   * http://www.youtube.com/watch?v=nuzEJzuJJJ4 :!:
 +  * https://www.youtube.com/watch?v=XGNoiPqa6PI