Функциональное тестирование
Перед прочтением даного раздела рекомендуется прочитать документацию по Selenium и документацию по PHPUnit. Дальше мы подытожим основные принципы написания функциональных тестов в Yii:
Как и модульный тест, функциональный тест пишется в классе
XyzTest, наследующего класс CWebTestCase, гдеXyz— имя класса, подлежащего тестированию. Мы можем использовать все методы классаPHPUnit_Extensions_SeleniumTestCase, потому что он является предком класса CWebTestCase.Класс функционального теста сохраняется в файле с именем
XyzTest.php. По соглашению, файл функционального теста может храниться в директорииprotected/tests/functional.Основное содержимое класса теста — набор тестовых методов с именами
testAbc, гдеAbc— часто имя тестируемой особенности. Например, для тестирования особенности входа пользователя у нас есть методtestLogin.Тестовый метод обычно содержит последовательность выражений, которые будут являться командами проверки для Selenium RC, показывающей ход и результаты тестирования веб-приложения. В нем также содержатся выражения утверждений для проверки, что веб-приложение отвечает именно так, как ожидалось.
Перед описанием, как же писать функциональный тест, давайте глянем файл
WebTestCase.php, сгенерированный командой yiic webapp. Этот файл определяет
класс WebTestCase, который может служить базовым для всех классов
функциональных тестов.
Класс WebTestCase в основном устанавливает базовый URL тестируемых страниц.
Далее, в тестовых методах, мы можем использовать относительные URL для
определения тестируемых страниц.
Мы также должны обратить внимание, что согласно базового тестового URL в
качестве входной точки используется файл index-test.php вместо файла
index.php. Единственное различие между сценариями index-test.php и
index.php то, что в качестве файла конфигурации приложения первый использует
файл test.php, а второй — файл main.php.
Теперь мы опишем, как протестировать функцию отображения записи демо-блога. Сначала мы пишем тестовый класс, как показано ниже. Отметим, что тестовый класс наследует от базового класса, который мы только что описали:
Как и при написании класса модульного теста, мы объявляем фикстуры для
использования этим тестом. Здесь мы показываем, что должна использоваться
фикстура Post. В тестирующем методе testShow мы сначала поручаем
Selenium RC открыть URL post/1. Заметим, что это относительный URL, а
полный URL формируется путем добавления относительного к базовому URL (т.е.
http://localhost/yii/demos/blog/index-test.php/post/1), который мы установили
в базовом классе. Затем мы проверяем, что можем найти заголовок записи
sample1 на данной странице. И мы также проверяем, что страница содержит текст
Leave a comment.
Подсказка: Перед запуском функциональных тестов запустите сервер Selenium-RC. Сделать это можно командой
java -jar selenium-server.jar, выполненной в директории, в которую установлен Selenium.