Авторизация  
VaM

VamShop 3 - Запускаем тесты phpunit

Рекомендуемые сообщения

VaM

Как работают тесты.

Документация - https://book.cakephp.org/3.0/en/development/testing.html

Всё сделано по документации CakePHP.

Я просто опишу коротко, как это выглядит на практике.

Для запуска тестов не нужно запускать сам движок VamShop.

Не нужен веб-браузер, веб-сервер.

Все тесты работают через консоль.

 

Тесты сделаны для Core модулей, для ядра системы, само ядро системы с тестами вынесено в отдельной репозиторий vamshop/vamshop-core

Как раз для того, что б можно было запускать тесты на автоматизированных сервисах типа Travis CI, т.е. не нужно сам движок устанавливать, достаточно только выкачать тесты и запустить.

В корневой папке с core модулями есть файл composer.json, в котором описаны пакеты, которые нужны для запуска тестов:

cakephp, phpunit и т.д.

 

т.е. скачиваетет отдельно core модули, затем в папке с core модулями выкачиваете зависимости, т.е. устанавливаете пакеты необходимые для работы тестов.

Выполняете composer install

Выгрузив все необходимые пакеты, можно запускать.

Вот как выглядит запуск через вагрант:

 

Тестировалось на машине c php 7.2.

С vagrant боксом scotchbox.

С вагрантом удобнее, т.к. там уже готовый набор php + composer + sqlite

Ничего не надо вручную устанавливать.

Вот с нуля всё делается и запускается:

composer create-project vamshop/vamshop-core ./
composer install
vagrant up
vagrant ssh
cd /var/www/public
vendor/bin phpunit

Либо можно без вагранта, если у Вас уже установлен на компе php, sqlite, то:

composer create-project vamshop/vamshop-core ./
composer install
vendor/bin phpunit

Либо, если у Вас уже полностью установленная копия VamShop, тогда выгружать сами файлы не надо, т.к. у Вас уже core модули есть.

Достаточно просто зайти в папку /vendor/vamshop/vamhop-core

и скачать необходимые пакеты для запуска тестов, выполнив в этой папке composer install

Теперь, собственно, как запуск тестов выглядит, смотрите скрины ниже.

Запустятся сразу все существующие тесты для всех Core модулей.

Screenshot from 2018-11-28 19-44-50.png

Screenshot from 2018-11-28 19-44-57.png

База данных по умолчанию использутся SQLite, название базы test

SQLite - это файловая база данных, сам файл создётся в корневой папке vamshop-core.

Файл называется test. База эта автоматически заполняется при выполнении тестов данными (fixtures, об этом подбронее в документации на сайте CakePHP) и автоматически очищается после завершения всех тестов. Если база не почистилась из-за ошибки какой, просто удалите файл test и всё, он создастся снова.

Либо можно использовать аналог phpMyAdmin, называется phpLightAdmin, для удаления таблиц из базы.

Но бычно ничего вручную делать не надо, только если какие-то ошибки в коде, возможно, придётся очистить базу, точнее файл удалить с базой и запускать снова.

 

Единственное, что нам нужно, это настроить базу данных для тестов, т.е. тесты будут загружать в базу необходимые данные для проверок, т.е. что б проверять, к примеру, работает ли регистрация на сайте, отображаются ли страницы, нет ли проблем при редактировании контента, и т.д. и т.п.

Всего 263 различных теста.

По умолчанию настроено на SQLite - это база на файлах.

 

Все настройки тестов в конфиге.

Есть основной конфиг, который описывает окружение, т.е. что именно запускать, с какой базой данных.

Файл конфига тестов в папке /tests/bootstrap.php (/vendor/vamshop/vamshop-core/tests/boostrap.php)

т.е. видно, что в файле описываются:

 

Кэш, создаются папки для кэш файлов, описывается база данных, которая будет использоваться для тестов.

Включается режим отладки, т.к. для тестов он необходим:

Cake\Core\Configure::write('debug', true);

и т.д.

Вместо SQLite можно использовать Mysql

Меняете SQlite на Mysql и ниже указываете логин, пароль, название базы.

Для SQLite не нужны логин, пароль, всё и так создастся, а вот для mysql нужно создать самому пустую базу и прописать доступ.

 

Всё, вот основной смысл тестов, т.е. как они запускаются и как работают.

 

А дальше уже можно работать с тестами, исправлять ошибки, писать ноые тесты.

 

Несколько примеров запуска тестов.

Находясь в папке /vendor/vamshop/vamshop-core:

 

Запуск всех существующих тестов:

vendor/bin/phpunit

Запуск тестов только для модуля Blocks:

vendor/bin/phpunit Blocks/tests

Запуск отдельного теста testPromotedWithVisibilityRole из модуля Blocks:

vendor/bin/phpunit Blocks/tests --filter testPromotedWithVisibilityRole

 

Рабочий composer.json, на основе которого писалась данная заметка.

composer.json

 

Версиии софта в Vagrant боксе scotchbox:

php 7.0.18

PHPUnit 6.1

бокс scotchbox с ubuntu 16.04

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация