Знакомство с Codeception. Acceptance test.

Написана 24 Января, 2012 в 23:05. Автор: borN_free   |   Теги: php, codeception, test Комментарии 6

codeceptionДавайте познакомимся со отличным тулом для тестирования - Codeception, который позволяет нам делать acceptance, functional, unit тесты. Базируется он на PHPUnit, mink.

После статьи на habrahabr я сразу заинтересовался идеей, и особенно Acceptance тестом. Его и рассмотрим.

Предисловие

Процесс установки описан в мануале, но всё же я остановлюсь на нем, возможно у кого-то возникнут похожие трудности. После того как вы скачали codecept.phar и положили в директорию с вашим проектом, необходимо выполнить команду:

сodecept install

Вот тут и возникла у меня ошибка:

Could not open input file: codecept

Поэтому если у вас появилось то же самое, далее все вызовы codecept меняем на "php codecept.phar". В итоге, что бы установить тесты для проекта мы выполним команду:

php codecept.phar install
php codecept.phar bootstrap
php codecept.phar build

Теперь непосредственно о Codeception.

Архитектура папок, созданных в корне вашего проекта, выглядит следующим образом:

Архитектура папок В папке data лежит дамп базы данных, который автоматически восстанавливается после проделаных тестов, если вы не хотите засорять базу либо что-то удалять из нее.

Папки acceptance, functional, unit соответственно содержат классы для работы с этими тестами. Нас интересует Acceptance. WebGuy - класс, объект которого мы будем всегда создавать для тестирования приложения. WebGuy символизирует человека, тестирующего приложение через браузер. _bootstrap.php - файл, где вы можете указать дополнительно используемые переменные для тестирования. Так же нас интересует файл acceptance.suite.yml, лежащий в директории tests. В нем хранятся все настройки для теста, и давайте сразу же изменим url на ваш локальный.

Протестируем, работает ли поиск на сайте. Создадим файл в папке acceptance: SearchCept.php (кстати, постфикс "Cept" - обязателен). Напишем следующий код:

$I = new WebGuy($scenario);
$I->wantTo('search some text');
$I->amOnPage('/');
$I->fillField('editbox_search','javascript');
$I->click('button_search');
$I->see('javascritp');

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

  1. I want to search some text
  2. I am on page "/"
  3. I fill field "editbox_search" (значение - "javascript")
  4. I click "button_search" (отправляем форму)
  5. I see "javascript" (мы пишем, что хотим после поиска видеть на странице слово javascript - тем самым поиск удался и запись в блоге найдена)

Отлично! Первый тест готов. Запускаем командную строку, переходим в папку вашего проекта и выполняем:

codecept run acceptance

Видим результат:

Suite acceptance started
Trying to earch some text (SearchCept) - Ok
Time: 1 second, Memory: 4.00Mb
OK (1 test, 1 assertions)

Тест прошел успешно. Давайте попробуем ввести заведомо ложный текст. У меня на сайте в этом случае выводится надпись "Нет результатов.". Проверим это:

$I = new WebGuy($scenario);
$I->wantTo('search some text');
$I->amOnPage('/');
$I->fillField('editbox_search','блаблабла-три-два-один');
$I->click('button_search');
$I->see('Нет результатов.');

Запускаем тест - все работает.

Для начала хватит практики и теории. Более подробно познакомимся с API Codeception в следующей статье.

6 comments

+4 ответить
February 20, 2012 at 03:19 pm

Поэтому если у вас появилось то же самое, далее все вызовы codecept меняем на "php codecept.phar". В итоге, что бы установить тесты для проекта мы выполним команду:

Забыли написать, что надо перед этим скачать и положить в текущий каталог codecept.phar, который находится по адресу https://github.com/Codeception/Codeception/raw/master/package/codecept.phar

ответить
borN_free:
February 20, 2012 at 04:54 pm

Спасибо, добавил в статью.

+1 ответить
April 17, 2012 at 10:54 am

Здравствуйте. У меня по какой то причине под виндой после вызова php codecept.phar run acceptance выводит только #!/usr/bin/php и все, хотя файлы с тестами есть, что бы это могло быть?

-5 ответить
April 17, 2012 at 01:09 pm

<

ответить
August 21, 2017 at 02:58 am

Popular color Pantone authority released in replica rolex watches 2017 the green lawn is green, think of the endless suddenly make people feel full of vitality, recently very popular online forgiveness packages, up to fake watches its special meaning, from the visual angle is comfortable. In the watch industry is uk hublot also popular green, here let us see three green elements of watches.

ответить
September 21, 2017 at 01:52 am

But if you really want to be the star of cheap adidas shoes, you need to get yourself a pair of beer-proof, puke-proof, cheap adidas shoes. The shoes are coated with a “DPBR” coating, meaning “durable puke and beer repellent” that is absolutely necessary if you’re attending any beer event.“Oakley and its iconic designs are well-known throughout the eyewear industry, and defendant’s eyewear model … is a nearly identical copy of cheap oakley sunglasses ’ design,” according to the complaint.The quintessential cheap polo ralph lauren has been the staple sartorial choice for gentlemen for decades together. Combining Ivy League classics with downtown styles and relaxed athletic looks, Polo sportswear and tailored clothing present a one-of-a-kind vision in menswear that is stylish, timeless, and appealing across generations.Louis Vuitton doesn’t have to be that expensive at all. Even now, you can enter any cheap louis vuitton store across the globe and exit the same with a new handbag resting upon your shoulder.

Оставьте свой комментарий:

Поля с * обязательны.