Инструменты пользователя

Инструменты сайта


yii:yii2:codeception

Различия

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

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

Следующая версия
Предыдущая версия
yii:yii2:codeception [2021/01/12 10:35]
werwolf создано
yii:yii2:codeception [2023/01/12 12:18] (текущий)
Строка 1: Строка 1:
 +=====Codeception=====
 +В Yii2 используется Codeception как framework для тестирования.\\
 +\\
 +Codeception — это отдельный проект,​ не зависящий от Yii2, который используется во многих современных framework’ах (Symfony, Laravel и др.). И конечно же, вы можете установить Codeception используя Composer.\\
  
 +====Настройка====
 +
 +кооманда на формитрование папки с настроками codeception:​
 +<​code>​
 + cd api
 + php vendor/​bin/​codecept bootstrap --namespace api 
 +</​code>​
 +
 +такая структура должна получиться ​
 +{{ :​yii:​yii2:​screenshot_1.png |}}
 +
 +Настройка api/​tests/​unit/​_bootstrap.php:​
 +
 +<code php>
 +<?php
 +// Here you can initialize variables that will be available to your tests
 +defined('​YII_DEBUG'​) or define('​YII_DEBUG',​ true);
 +defined('​YII_ENV'​) or define('​YII_ENV',​ '​dev'​);​
 +
 +require __DIR__ . '/​../​../​../​vendor/​autoload.php';​
 +require __DIR__ . '/​../​../​../​vendor/​yiisoft/​yii2/​Yii.php';​
 +require __DIR__ . '/​../​../​../​common/​config/​bootstrap.php';​
 +require __DIR__ . '/​../​../​config/​bootstrap.php';​
 +
 +$config = require __DIR__ . '/​../​../​config/​codeception-local.php';​
 +
 +$app = new yii\console\Application($config);​
 +
 +</​code>​
 +
 +Создаем файлик настроек приложения api/​config/​codeception-local.php
 +
 +настройки скопировал из main.php, кроме ​
 +<​code>​
 +'​errorHandler'​ => [
 +            '​errorAction'​ => '​site/​error',​
 +        ],) 
 +</​code>​
 +
 +настройка тестовой базы:
 +добавил в api/​config/​codeception-local.php:​
 +
 +<​code>​
 +       '​db'​ => [
 +            '​class'​ => '​yii\db\Connection',​
 +            '​dsn'​ => '​mysql:​host=db;​dbname=tests',​
 +            '​username'​ => '​root',​
 +            '​password'​ => '​2619192',​
 +            '​charset'​ => '​utf8',​
 +        ],
 +</​code>​
 +
 +====Структура тестов,​ папка tests и её содержимое====
 +
 +Для написания тестов,​ существует специальная папка test.\\
 +\\
 +Если вы в неё зайдет,​ то увидите следующую структуру:​
 +
 +<​code>​
 +_data
 +_output ​
 +_support ​
 +acceptance ​
 +bin
 +functional ​
 +unit
 +_bootstrap.php
 +acceptance.suite.yml.example
 +functional.suite.yml
 +unit.suite.yml
 +</​code>​
 +
 +
 +
 +  * **_data** — это папка, в которой хранятся PHP файлы возвращающие массив данных (например,​ автомобили) для использования в fixtures. ​
 +  *  **fixtures** класс по типу ActiveRecord,​ который перед запуском теста, добавляет данные из файла, в заранее указанную таблицу из ActiveRecord основного класса (используя параметр $modelClass , например,​ fixtures/​Car.php,​ будет ниже в примере). После того как тест будет завершен,​ все данные из этой таблицы будут удалены. И так процесс будет повторяться.
 +  *  **_output** — это папка, в которой выводится результат запуска функциональных тестов. Выглядят они как исходный код HTML странички. Например,​ если вы зайдете на страницу и посмотрите на неё с помощью инспектора кода, в этом случае вы увидите тоже самое.
 +  *  **_support** — это сгенерированные модули,​ которые нужны для запуска тестов. Они создаются с помощью команды (vendor/​bin/​codecept build tests/)
 +  *  **bin** — это папка, в которой находится бинарный файл (yii), на подобии того, что лежит в корне, только этот именно для запуска процессов в тестовом режиме.
 +  *  **acceptance** —  это папка, в которой находятся файлы со сценарием со стороны пользователя,​ эмулируя поведение браузера
 +  *  **functional** — это папка, в которой находятся файлы со сценарием со стороны пользователя,​ эмулируя поведение браузера
 +  *  **unit** — этот папка с файлами,​ в которых проверяются классы или часть кода на то, что он/они работает по определенному сценарию или без сценария
 +
 +====Запуск тестов====
 +
 +В Yii2 по умолчанию присутствуют некоторые тесты запустить тест и чтобы их запустить — используйте команду ниже:
 +<​code>​
 +/​var/​www/​advanced/​api#​ ../​vendor/​bin/​codecept run
 +</​code>​
 +
 +Если у вас выдает следующую ошибку:​
 +<​code>​
 +[yii\base\InvalidConfigException] Either GD PHP extension with FreeType support or ImageMagick PHP extension with PNG support is required.
 +</​code>​
 +
 +Тогда её можно исправить установив ''​php-gd''​ расширение:​
 +
 +  * Для php 5.5+: ''​$ sudo apt-get install php5-gd''​
 +  * Для php 7+: ''​$ sudo apt-get install php7.0-gd''​
 +
 +И теперь снова попробуйте запустить тесты, у вас должно вывестись что-то похожее на это:
 +
 +<​code>​
 +Api.unit Tests (22) --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 +✔ ModelsBehaviorTest:​ Before delete | #0 (0.03s)
 +✔ ModelsBehaviorTest:​ Before delete | #1 (0.02s)
 +✔ ModelsBehaviorTest:​ Before delete | #2 (0.02s)
 +✖ ModelsBehaviorTest:​ Before delete | #3 (0.02s)
 +✔ ModelsBehaviorTest:​ Before delete | #4 (0.02s)
 +✔ ModelsBehaviorTest:​ Before delete | #5 (0.02s)
 +✔ ModelsBehaviorTest:​ Before delete | #6 (0.06s)
 +✔ ModelsBehaviorTest:​ Before delete | #7 (0.02s)
 +✖ ModelsBehaviorTest:​ Before delete | #8 (0.02s)
 +✔ ModelsBehaviorTest:​ Before delete | #9 (0.14s)
 +✔ ModelsBehaviorTest:​ After soft delete (0.00s)
 +✔ ModelsBehaviorTest:​ Events (0.00s)
 +✔ ModelsBehaviorTest:​ Before soft delete (0.00s)
 +✔ CommentTest:​ Get comments | #0 (0.06s)
 +✔ CommentTest:​ Get comments | #1 (0.04s)
 +✔ CommentTest:​ Get comments | #2 (0.03s)
 +✔ CommentTest:​ Get comments | #3 (0.03s)
 +✔ CommentTest:​ Get comments | #4 (0.03s)
 +✔ CommentTest:​ Get comments | #5 (0.03s)
 +✔ CommentTest:​ Send new comment (0.00s)
 +✔ CommentTest:​ Set comment (0.00s)
 +✔ CommentTest:​ Behaviors (0.00s)
 +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 +2x DEPRECATION:​ Calling the "​Symfony\Component\EventDispatcher\EventDispatcherInterface::​dispatch()"​ method with the event name as the first argument is deprecated since Symfony 4.3, pass it as the second argument and provide the event object as the first argument instead. /​var/​www/​advanced/​vendor/​symfony/​event-dispatcher/​EventDispatcher.php:​58
 +
 +Time: 800 ms, Memory: 92.49 MB
 +
 +There were 2 failures:
 +
 +---------
 +1) ModelsBehaviorTest:​ Before delete | #3
 + ​Test ​ tests/​unit/​components/​ModelsBehaviorTest.php:​testBeforeDelete
 +В классе \modules\dir\models\CurrencyCourses не найдено поле isdeleted, проверка методом canGetProperty
 +Failed asserting that false is true.
 +#1  /​var/​www/​advanced/​api/​tests/​unit/​components/​ModelsBehaviorTest.php:​31
 +
 +---------
 +2) ModelsBehaviorTest:​ Before delete | #8
 + ​Test ​ tests/​unit/​components/​ModelsBehaviorTest.php:​testBeforeDelete
 +В классе \modules\promo\models\basePromotionTag не найдено поле isdeleted, проверка методом canGetProperty
 +Failed asserting that false is true.
 +#1  /​var/​www/​advanced/​api/​tests/​unit/​components/​ModelsBehaviorTest.php:​31
 +
 +FAILURES!
 +Tests: 22, Assertions: 85, Failures: 2.
 +
 +</​code>​
yii/yii2/codeception.1610436905.txt.gz · Последние изменения: 2023/01/12 12:16 (внешнее изменение)