воскресенье, 20 ноября 2016 г.

Acceptance Тестирование WordPress сайта с помощью Codeception

Codeception — это фреймворк для тестирования веб-приложений. Тесты, написанные с использованием этого фреймворка легко писать, модифицировать и исполнять. Используя набор готовых модулей, вы можете сконцентрироваться на написании самих тестов, вместо того, чтобы изобретать тестовый фреймворк.

Codeception позволяет писать 3 вида тестов.

Приемочные (Acceptance) тесты позволяют тестировать веб-сайт с точки зрения пользователя — переходить по страницам, кликать по ссылкам, заполнять формы и т.д. Не имеет значение, какой фреймворк, база данных, язык программирования или веб-сервер используются чтобы отобразить веб-страницу. Любая веб-страница, которую вы можете посетить с помощью веб-браузера может быть покрыта такими тестами.

Функциональные (Functional) тесты позволяют тестировать веб-приложение без запуска веб-сервера. Мы можем, например, эмулировать запрос к веб-серверу, передавая $_GET  и $_POST переменные, проверяя, что мы получаем правильный ответ при данном запросе и что отправленные данные корректно сохраняются в базе данных.

Модульные (Unit) тесты позволяют изолированно тестировать отдельные функции и классы.


WordPress и Codeception


Предположим, нам нужно менять значение опции, полученной с помощью функции get_option. После каждого изменения, нам нужно загружать веб-страницу и смотреть, есть ли на экране какие-либо элементы. Данная статья рассказывает, как это реализовать.

WP-Browser  — набор модулей для Codeception облегчающий тестирование тем и плагинов для WordPress. Мы будем использовать только модуль WPBootstrapper позволяющий вызывать функции WordPress прямо в тестах.
  1. Создайте директорию и файл composer.json
    mkdir codeception_tests && cd codeception_tests touch composer.json
  2. Измените содержимое файла composer.json на:
    { "require": { "codeception/codeception": "^2.2", "lucatume/wp-browser": "~1.11" } }
  3. Выполните команду composer install
  4. Создайте псевдоним
    alias codecept='./vendor/bin/codecept'
  5. Подготовьте тестовую директорию и конфигурационные файлы
    codecept bootstrap
  6. Сгенерируйте тест
    codecept generate:cept acceptance Welcome
  7. Откройте созданный файл теста tests/acceptance/WelcomeCept.php и измените его на:
    // загрузка WordPress bootstrapWp(); // обновление описания блога update_option( 'blogdescription', 'Welcome to my blog' ); // Загрузка главной страницы $I->amOnPage('/'); // Проверка, что описание блога присутствует на странице $I->see('Welcome to my blog'); // Обновление описания блога update_option( 'blogdescription', 'Welcome again' ); // Обновление страницы $I->amOnPage('/'); // Проверка, что новое описание блога присутствует на странице $I->see('Welcome again');
  8. Добавьте следующий код в файл tests/acceptance.suite.yml
    class_name: AcceptanceTester modules: enabled: - PhpBrowser: url: http://localhost/blog // url блога - \Helper\Acceptance - WPBootstrapper: wpRootFolder: '..' // путь к директории с WordPress
  9. Запустите тест
    codecept run acceptance
  10. Тест выполнился успешно. Результат:
    Codeception PHP Testing Framework v2.2.6 Powered by PHPUnit 5.6.4 by Sebastian Bergmann and contributors. Acceptance Tests (1) ------------------------------------------------ + WelcomeCept: (14.78s) --------------------------------------------------------------------- Time: 20.15 seconds, Memory: 20.00MB OK (1 test, 2 assertions)

Комментариев нет:

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