Если вам понадобился личный DropBOX, то быстро развернуть его можно с помощью ownCloud. OwnCloud можно установить на обычный хостинг, т.к.…
Установка
Существует несколько методов установки codeception. Мы воспользуемся composer для этой цели, вы, конечно, можете выбрать любой удобный для вам метод.
Для начала перейдем в каталог куда вы хотите установить codeception и где будут храниться ваши тесты. В моем случае — app1.
composer require "codeception/codeception:*"
или
php composer.phar require "codeception/codeception:*"
Через некоторое время codeception будет скачан. После установки вы сможете использовать его в командной строке. Выполним следующую команду, чтобы проверить, что все установилось корректно:
vendor/bin/codeception --version
Настройка codeception:
Следует выполнить предварительную настройку codeception. Выполните следующую команду из корневого каталога приложения (app1).
vendor/bin/codeception bootstrap
Будет создан каталог tests
. В нем вы будете хранить свои тесты. Так же в нем будут подкаталоги acceptance
, functional
, unit
. Как вы понимаете, в них будут разные типы тестов. Нам понадобится тип тестирования API, создадим его:
vendor/bin/codecept generate:suite api
Итак, мы видим каталог api
, в нем мы, соответственно, будем держать API тесты. Прежде чем продолжить, давайте избавимся от длинного пути vendor/bin/codeception
и заменим его просто на codeception
.
При работе на Линукс лучше установить codeception глобально, чтобы можно было использовать команду без полного пути к исполняемому файлу. Можно это следать следующим образом: …..какая-то сылка….
На windows просто добавьте путь к файлу в системную переменную PATH
. Итак, теперь вы можете просто вызывать codeception. Попробуйте выполнить следующую команду где угодно в вашей системе:
codecept --version
Теперь давайте взглянем на структуру каталогов codeception.
Структура каталогов codeception
В каталоге test
, который был создан в результате команды codecept bootstrap
, вы увидите следующий набор директорий:
_data
— может содержать файлы DB при необходимости._output
— содержит вывод тестов и их результат._support
— содержит файлы помощи к тестам.acceptance
— содержит приёмные тесты.api
— содержит API тесты. По-умолчанию отсутствует, для её создания воспользуйтесь командойgenerate:suite
.functional
— содержит функциональные тесты.unit
— содержит юнит тесты_bootstrap.php
— файл для автоматической подгрузки стороних библиотек.acceptance.suite.yml
— настройка приёмочных тестов.api.suite.yml
— настройка api тестов.functional.suite.yml
— настройка функциональных тестов.unit.suite.yml
— настройка юнит тестов.
Так же в каталоге api
вы найдете файл _bootstrap.php
. Он используется для загрузки библиотек в пределах api тестирования.
Настройка API тестов:
Добавьте параметр PhpBrowser
и Url
в файл api.suite.yml
:
class_name: ApiTester
modules:
enabled: [ApiHelper, PhpBrowser, REST]
config:
PhpBrowser:
url: http://localhost/app
В примере выше не допускается использование табуляции, только пробелы.
Laravel или PhpBrowser
При работе с Laravel добавляйте модуль Laravel
вместо PhpBrowser
. При возникновении ошибки, описание исключения (exception) будет более понятно, что нельзя сказать о PhpBrowser
, где вы увидите просто ошибку 500. Раньше я работал с Laravel, но из-за того, что PhpBrowser более быстр, я переключился на него. Если на вашей машине достаточно оперативной памяти, скорость их исполнения вас не сильно волнует, а всего их до 50ти штук, то тогда можно использовать Laravel. В целом, выбор за вами.
Написание теста:
Существует два способа написания тестов, основываясь на два типа файлов. Cept
и Cest
. Cept строится по сценарию, а Cest на базе классов. Выбор зависит от того, как вы привыкли писать код — структурный подход или классовый. Я предпочитаю и советую использовать классовый подход, так как он дает все преимущества ООП.
Создадим первый Cest
файл с помощью следующей команды:
codecept generate:cest api CreateUser
Откройте его и добавьте код:
<?php
use \ApiTester;
class CreateUserCest
{
public function _before(ApiTester $I)
{
}
public function _after(ApiTester $I)
{
}
// tests
public function createNewUser(ApiTester $I)
{
$I->wantTo('create a user via API');
$I->amHttpAuthenticated('service_user', '123456');
$I->haveHttpHeader('Content-Type', 'application/x-www-form-urlencoded');
$I->sendPOST('users', ['name' => 'davert', 'email' => 'davert@codeception.com']);
$I->seeResponseCodeIs(200);
$I->seeResponseIsJson();
$I->seeResponseContains('{"result":"ok"}');
}
}
Переменная $I
содержит ссылку на объект типа ApiTester
— представление пользователя, исполняющего сценарий теста.
Выполнение теста:
До первого выполнения API теста, файл api tester
отсутствует в каталоге api
. Его следует создать командой:
codecept build
Затем:
codecept run api
Вы увидите ошибку если по указанному URL нет обработчика. Для более подробного вывода информации используйте ключи -vv
или -vvv
при выполнении теста.
codecept run api -vv
Более подробную информацию о codeception вы найдете в официальной документации.
Если вас интересуют автоматическое тестирование, лучшие способы тестирования, как и зачем писать тесты я советую прочитать Тестирование в Laravel Jeffrey Way. Если вы работает с PHP, то я еще больше рекомендую прочитать эту книгу, вы, наверняка, найдете в ней много полезного.
Вы скорее всего знакомы с книгой Jeffrey Laracast, в ней описаны лучшие методы тестировании и подходы к разработке с применением тестирования.