Ищете «безголовый браузер», эквивалентный PHP для тестирования Cucumber - PullRequest
4 голосов
/ 25 февраля 2011

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

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

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

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

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

Ответы [ 6 ]

3 голосов
/ 28 апреля 2011

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

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

Он имеет SahiDrvier для обработкитестирование в браузере и простой php-браузер.

3 голосов
/ 18 марта 2011

Если вы настроили Cucumber для использования Webrat, вы можете настроить Webrat для использования 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 (что, по моему мнению, было невозможно). Я еще не пробовал такой подход, поэтому не знаю, насколько хорошо он работает.

2 голосов
/ 13 июня 2013

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

UPDATE:

Это похоже на 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)

1 голос
/ 28 апреля 2011

Обновление: Похоже, что Akephalos давно не обновлялся, поэтому это может быть не лучшим решением для работы с более новой версией 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
0 голосов
/ 23 июля 2012

Прежде всего, вы должны использовать Капибара (замена 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 driver (действительно безголовый браузер, который использует Webkit за кулисами). В этом есть небольшая настройка, но как только вы это сделаете, скорость улучшится благодаря использованию Selenium.

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

require 'capybara/cucumber'

Capybara.app_host = "http://your.app.com"
Capybara.default_driver = :webkit
0 голосов
/ 11 марта 2011

Если вы используете огурец, вы еще не используете Ruby?Почему бы не использовать скорость или хитрость?

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

Я предлагаю взглянуть на один из этих двух проектов, чтобы помочь вам начать:1006 * Тестирование Cheesy UI - Соответствующий блог

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

...