Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
php:codeception [2018/07/06 15:06] – [Юнит тесты / 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 тестирование =====+==== Создание ====
  
-==== Advanced профмль ====+<code bash> 
 +$ ./vendor/bin/codecept bootstrap ./frontend 
 +$ ./vendor/bin/codecept bootstrap ./vendor/mirocow/yii2-notification 
 +</code>
  
-=== Функциональные тесты / functional ===+Создает папку 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>
  
-  frontend/tests/functional +В которой будут создыны 3 кипа конфигураций: **unit**, **functional**, **acceptance**
-  backend/tests/functional+
  
 +=== Описание ===
 +
 +  * 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> <code bash>
-php vendor/bin/codecept build+./vendor/bin/codecept -c ./vendor/mirocow/yii2-queue config:validate
 </code> </code>
  
-=== Юнит тесты / unit ===+<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 ====
  
 проверяет что отдельный модуль кода работает верно проверяет что отдельный модуль кода работает верно
Строка 41: Строка 113:
 $ ./vendor/bin/codecept build $ ./vendor/bin/codecept build
 </code> </code>
 +
 +=== Создание ===
 +
 +<code bash>
 +$ ./tests/codeception/common generate:test unit UserTest -vvv
 +</code>
 +
 +=== Запуск ===
  
 Запуск всех тестов из выбранной апликации Запуск всех тестов из выбранной апликации
  
 <code bash> <code bash>
-$ ./vendor/bin/codecept -c common run unit -vvv +$ ./vendor/bin/codecept -c ./common run unit -vvv 
-$ ./vendor/bin/codecept -c frontend run unit -vvv +$ ./vendor/bin/codecept -c ./frontend run unit -vvv 
-$ ./vendor/bin/codecept -c backend run unit -vvv+$ ./vendor/bin/codecept -c ./backend run unit -vvv
 </code> </code>
  
-  * Где -с - папка с конфигурационным файлом codeception.yml+  * Где -с - папка с конфигурационным файлом codeception.yml (относительно текущей папки ./tests ) 
 +  * -v - Минимальный уровень логирования 
 +  * -vv - Средний уровень логирования 
 +  * -vvv - Маскимальный уовень логирования
  
 Запуск указанных тестов Запуск указанных тестов
Строка 56: Строка 139:
 <code bash> <code bash>
 $ cd /app $ cd /app
-$ ./vendor/bin/codecept -c common run unit models/LoginFormTest.php+$ ./vendor/bin/codecept -c ./common run unit models/LoginFormTest.php
 </code> </code>
  
Строка 64: Строка 147:
 Аналогично запускаются тесты из frontend и backend Аналогично запускаются тесты из frontend и backend
  
-=== Приёмочное тестирование / acceptance ===+ 
 +==== Функциональные тесты / 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   * frontend/tests/acceptance
 +
 +Предварительная сборка тестов
  
 <code bash> <code bash>
-php vendor/bin/codecept build+./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>
 ===== Видео ===== ===== Видео =====
  
Строка 83: Строка 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