вторник, 1 апреля 2014 г.

Codeception tips

Не так давно я стал заниматься автоматизированным функциональным тестированием. Тестируемый продукт написан на PHP (Yii). При выборе инструмента для тестирования я искал фреймворки, написанные на том же языке, чтобы в дальнейшем при создании тестов можно было использовать код самого проекта. Мой выбор пал на Codeception. Хочу поделиться некоторыми некоторыми "полезностями", которые могут значительно сэкономить время при изучении данного инструмента.

  1. Чтобы запустить тесты в chrome, недостаточно указать это при запуске тестов. Selenium сервер должен быть запущен с указанием пути к драйверу chrome:
    java -Dwebdriver.chrome.driver='/path/to/chromedriver' -jar selenium-server-standalone-2.40.0.jar
    Скачать chromedriver
  2. Запуск отдельного теста из Cest файла:
    codecept run tests/acceptance/UserCest:login
    где UserCest - cest файл с набором тестов, а login - название теста
  3. В Codeception есть модуль Db, который позволяет перед каждым прогоном набора тестов (или перед каждым тестом) восстанавливать базу из бэкапа, а также предоставляет удобные методы для обращения к БД тестируемого приложения. У модуля есть недостаток - он не работает с большими бэкапами (баг PHP reg exp). Если же вы хотите пользоваться методами модуля, а бэкап делать своими средствами, нужно указать это в конфиге codeception для модуля Db (acceptance.suite.yml):
    populate: false
    cleanup: false
Попробуйте Codeception. Тесты получаются достаточно стабильными (FF, Chrome), пишутся быстро, PageObject паттерн поддерживается.