Настройка тестового окружения

Для тестирования Юпи! мы используем популярный фреймворк для тестирования - Codeception.

Для ознакомления с Codeception мы перевели ешл официальную документацию http://allframeworks.ru/codeception/.

Мы не вносим какие-либо изменения в сам фреймворк, однако добавляем некоторые собственные Помощники (Helpers), а так же придерживаемся определенных соглашений и правил.

Тесты codeception располагаются в каталоге ./tests/ относительно корня yupe.

Так как существует необходимость в настройке тестового окружения для каждого разработчика, в репозитории мы храним только конфигурационные файлы *.dist.yml.

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

Прежде чем начать тестирование, вам необходимо создать конфигурационный файл тестовой базы данных (protected/config/db-test.php), а так же файлы конфигурации Codeception:

  • codeception.yml
  • tests/acceptance.suite.yml
  • tests/functional.suite.yml
  • tests/unit.suite.yml

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

Подготовка тестового окружения

Для начала отметим, что в соответсвтии с соглашением Юпиы! должен быть установлен на отдельный виртуальных хост и доступен по адресу http://yupe.local. Конечно, в дельнейшем вы сможете настроить данный адрес так как вам угодно, однако по умолчанию файлы конфигурации будут созданны именно с таким адресом.

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

Для создания личных файлов конфигурации выполните команду:

./yiic testenv create

Данная команда в интерактивном режиме спросит вас о настройках базы данных и создаст необходимые файлы конфигурации в соответствующих каталогах:

  • codeception.yml - личный файл конфигурации Codeception, будет объеденен с codeception.dist.yml
  • tests/acceptance.suite.yml - личный файл конфигурации для Acceptance тестов, будет объеденен с acceptance.suite.dist.yml
  • tests/functional.suite.yml - личный файл конфигурации для Functional тестов, будет объеденен с functional.suite.dist.yml
  • tests/unit.suite.yml - личный файл конфигурации для Unit тестов, будет объеденен с unit.suite.dist.yml
  • protected/config/db-test.php - файл конфигурации тестовой базы данных для Yupe (Используется в index-test.php при Acceptance и Functional тестирвоании, а так же используется при тестировании консольных комманд Yupe и Yii).

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

Для удаления личных файлов конфигурации выполните команду**:

./yiic testenv reset

Данная команда удалит все личные файлы конфигурации.

Тестовое окружение Юпи!

Файлы Юпи использующиеся при тестировании:

  • protected/config/console-test.php - Используется при создании приложения для unit тестирования консольных команд
  • protected/config/test.php - Используется при создании приложения для functional и acceptance тестирования Юпи!
  • public/index-test.php - Точка входа для приложения при Acceptance и Functional тестировании

Структура каталогов и файлов Codeception:

  • codeception.dist.yml - Главный конфигурационный файл Codeception (Хранится в репозитории)
  • codeception.yml - Личный главный конфигурационный файл Codeception (создается разработчиком)
  • tests/ - Каталог тестов Codeception
  • tests/acceptance/ - Каталог Acceptance (Приемочных) тестов Yupe
  • tests/functional/ - Каталог Functional (Функциональных) тестов Yupe
  • tests/unit/ - Каталог Unit (Модульных) тестов Yupe
  • tests/acceptance.suite.dist.yml - файл конфигурации для Acceptance тестов (Хранится в репозитории)
  • tests/acceptance.suite.yml - личный файл конфигурации для Acceptance тестов (создается разработчиком)
  • tests/functional.suite.dist.yml - файл конфигурации для Functional тестов (Хранится в репозитории)
  • tests/functional.suite.yml - личный файл конфигурации для Functional тестов (создается разработчиком)
  • tests/unit.suite.dist.yml - файл конфигурации для Unit тестов (Хранится в репозитории)
  • tests/unit.suite.yml - личный файл конфигурации для Unit тестов (создается разработчиком)

В целом структура каталога tests/ не отличается от стандартной структуры каталога которую создает Codeception. То же самое касается и конфигурационных файлов.

Единственное о чем следует помнить: В файлах *.dist.yml мы используем некоторые сервисные переменные, которые в последствии, при создании личных файлов конфигураци, заменяются на указаные разработчиком, поэтому данные файлы не будут работать при отсутствии личных файлов конфигурации, сгенерированных командой ./yiic testenv create.

Основной особенностью применения Codeception являеся тот факт, что с его помощью можно легко тестировать сайты и веб-приложения, написанные на любой CMS и/или фреймвокре или же вообще без оных. Acceptance- и даже Functional-тесты можно использовать практически на любом проекте. Если у вас есть проект, качество которого, необходимо поддерживать на должном уровне - напишите нам.