Ищем безголовый эквивалент браузера для PHP для тестирования Cucumber

Я пытаюсь настроить функциональное/приемочное/интеграционное тестирование с использованием Cucumber для моего проекта PHP. Я пытаюсь понять лучший подход к реализации этих типов тестов.

Я понимаю, что Selenium может тестировать javascript, но Selenium работает медленно, и мне не всегда нужно тестировать javascript. Я ищу эквивалент «безголового браузера» для PHP.

Будет ли любой из них классифицироваться как «безголовые браузеры»?

  • Веб-тестирование SimpleTest
  • Zend_Test_PHPUnit_ControllerTestCase

Что вы сделали для реализации интеграционного тестирования вашего проекта Zend Framework?


person Andrew    schedule 25.02.2011    source источник


Ответы (6)


Если вы настроили Cucumber для использования Webrat, вы можете настроить Webrat для использования Mechanize по умолчанию . Mechanize — это, по сути, безголовый браузер. Вот как выглядит мой файл env.rb:

# RSpec
require 'rspec/expectations'

# Webrat
require 'webrat'

require 'test/unit/assertions'
World(Test::Unit::Assertions)

Webrat.configure do |config|
  config.mode = :mechanize
end

World do
  session = Webrat::Session.new
  session.extend(Webrat::Methods)
  session.extend(Webrat::Matchers)
  session
end

Кроме того, согласно в этой статье вы можете настроить Cucumber для использования Capybara и настроить его для использования Celerity (безголовый браузер с поддержкой javascript). Он также включает инструкции по настройке Capybara для использования Selenium RC (что, как мне казалось, невозможно). Я еще не пробовал этот подход, поэтому я не знаю, насколько хорошо он работает.

person Andrew    schedule 18.03.2011

Почему бы не использовать behat ( http://behat.org/ )?

Он должен соответствовать всем перечисленным выше требованиям и написан на php.

У него есть SahiDrvier для тестирования «в браузере», а также простой php-браузер.

person Florian Klein    schedule 28.04.2011

попробуйте Codeception: http://codeception.com

ОБНОВИТЬ:

Это как Capybara, но с PHP DSL. С codeception вы можете сделать что-то вроде этого:

$I = new WebGuy($scenario);
$I->wantTo('create wiki page');
$I->amOnPage('/');
$I->click('Pages');
$I->click('New');
$I->see('New Page');
$I->fillField('title', 'Hobbit');
$I->fillField('body', 'By Peter Jackson');
$I->click('Save');
$I->see('page created'); // notice generated
$I->see('Hobbit','h1'); // head of page of is our title
$I->seeInCurrentUrl('pages/hobbit'); 
$I->seeInDatabase('pages', array('title' => 'Hobbit'));

Вы можете использовать Selenium2 для просмотра или PHPBrowser (безголовый) для повышения производительности в сценариях без js (PHPBrowser не выполняет javascript)

person rizidoro    schedule 13.06.2013

Обновление. Похоже, что Akephalos давно не обновлялся, поэтому это может быть не лучшим решением для работы с более новой версией Capybara.


Используйте Capybara (замену Webrat) и Akephalos (безголовый браузер). Капибара используется для взаимодействия с Акефалосом.

Пример support/env.rb:

# Capybara configuration (using Akephalos)
require 'capybara/cucumber'
require 'akephalos'

Capybara.default_driver = :akephalos
Capybara.app_host = 'http://your.web.app'

Capybara.register_driver :akephalos do |app|
  # available options:
  #   :ie6, :ie7, :ie8, :firefox_3, :firefox_3_6
  Capybara::Driver::Akephalos.new(app, :browser => :firefox_3_6)
end
person Andrew    schedule 28.04.2011

Если вы используете Cucumber, вы еще не используете Ruby? Почему бы не использовать celerity или culerity?

Я использовал Cucumber с Celerity для тестирования приложения Struts 2, а также приложения ColdFusion 8. По сути, вы используете Celerity и JRuby (который обертывает HtmlUnit) или Culerity, который работает на родном ruby, для управления вашим браузером.

Я предлагаю взглянуть на один из этих двух проектов, чтобы помочь вам начать работу:

Простое тестирование пользовательского интерфейсаСоответствующий блог

Объекты страницы WatirMelon – Соответствующий блог

person Mike Cornell    schedule 11.03.2011
comment
Я использую Ruby (Cucumber) для тестирования своего веб-приложения PHP. Я не очень хорошо знаком с быстротой или culerity. Можете ли вы уточнить, как это будет использоваться? - person Andrew; 18.03.2011

Прежде всего, вы должны использовать Capybara (замену Webrat). Он используется для упрощения и стандартизации DSL, используемого для взаимодействия с браузером, и предоставляет некоторые полезные функции.

Несмотря на то, что Selenium немного медленный, с ним легко начать работу, поскольку он поставляется в комплекте с Capybara. К вашему сведению: по умолчанию используется Firefox.

Пример support/env.rb:

require 'capybara/cucumber'

Capybara.app_host = "http://your.app.com"
Capybara.default_driver = :selenium

Теперь, когда вы используете Capybara, вы должны использовать драйвер capybara-webkit (действительно автономный браузер, который использует Webkit за кулисами). Требуется небольшая настройка, но как только вы это сделаете, скорость улучшится благодаря использованию Selenium.

Пример support/env.rb:

require 'capybara/cucumber'

Capybara.app_host = "http://your.app.com"
Capybara.default_driver = :webkit
person Andrew    schedule 23.07.2012