4

我想爲我的PHP項目設置一些使用Cucumber的功能/驗收/集成測試。我試圖理解實現這些類型測試的最佳方法。尋找一個「無頭瀏覽器」相當於用於黃瓜測試的PHP

據我所知,Selenium可以測試JavaScript,但硒慢,我並不總是需要測試JavaScript。我正在尋找一個與PHP等價的「無頭瀏覽器」。

這些都被歸類爲「無頭瀏覽器?」

  • SimpleTest的web測試
  • Zend_Test_PHPUnit_ControllerTestCase

你做了什麼來實現你的Zend框架項目的集成測試?

回答

0

首先,你應該使用Capybara(用於Webrat的替代品)。它用於簡化和標準化用於與瀏覽器交互的DSL,並提供一些不錯的功能。

即使硒有點慢,它很容易上手,因爲它與水豚捆綁在一起。僅供參考:它默認使用Firefox。

support/env.rb

require 'capybara/cucumber' 

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

現在你正在使用水豚,你應該使用capybara-webkit driver(使用Webkit的幕後真正的無頭的瀏覽器)。有一些設置涉及到,但一旦你這樣做了,使用Selenium的速度就會提高。

support/env.rb

require 'capybara/cucumber' 

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

如果你使用Cucumber,你還沒有使用Ruby嗎?爲什麼不使用celerity或culerity?

我已經使用Cecumber的Cucumber來測試Struts 2應用程序以及ColdFusion 8應用程序。基本上,您使用Celerity和JRuby(包裝HtmlUnit)或Culerity(以本地ruby運行)來驅動瀏覽器。

我建議在看這兩個項目之一,以幫助您開始:

Cheesy UI Testing - Corresponding Blog

WatirMelon Page Objects - Corresponding Blog

+0

我使用您可以使用Selenium2瀏覽,或PHPBrowser(無頭)對JS少的情況更好的性能(PHPBrowser不執行的JavaScript) Ruby(黃瓜)來測試我的PHP Web應用程序。我並不是很熟悉快速通道或緊急情況。你能詳細說明它將如何使用? – Andrew 2011-03-18 17:12:04

+0

詳細闡述,HTH – 2011-03-18 17:49:05

3

如果設置黃瓜使用Webrat,可以set up Webrat to use Mechanize by default。機械化本質上是一個無頭的瀏覽器。這就是我的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 

另外,根據this article,您可以設置黃瓜使用水豚並將其配置爲使用迅捷(支持JavaScript模擬瀏覽器)。它還包括如何配置Capybara使用硒的RC(我認爲是不可能的)的說明。我還沒有嘗試這種方法,所以我不知道它有多好。

3

爲什麼不使用behat(http://behat.org/)?

它應該具備上面列出的所有要求,並且它是用php編寫的。

它有一個SahiDrvier來處理「瀏覽器內」的測試,以及一個簡單的PHP瀏覽器。

1

更新:它看起來像Akephalos有一段時間沒有更新,所以它可能不是一個很好的解決方案與更新版本的水豚工作。


使用Capybara(一個用於Webrat替換)和Akephalos(無頭瀏覽器)。水豚被用來與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 
2

給一個嘗試Codeception:http://codeception.com

UPDATE:

這就像水豚,但有一個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')); 

+0

@DaveChen回答更新:D – rizidoro 2014-04-23 11:44:26