4

我正在尝试使用 Cucumber 为我的 PHP 项目设置一些功能/验收/集成测试。我试图了解实现这些类型测试的最佳方法。

我知道 Selenium 可以测试 javascript,但是 Selenium 很慢,而且我并不总是需要测试 javascript。我正在寻找与 PHP 等效的“无头浏览器”。

这些中的任何一个都会被归类为“无头浏览器”吗?

  • SimpleTest 网络测试
  • Zend_Test_PHPUnit_ControllerTestCase

您为实现 Zend Framework 项目的集成测试做了哪些工作?

4

6 回答 6

3

如果您将 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 的说明(我认为这是不可能的)。我还没有尝试过这种方法,所以我不知道它的效果如何。

于 2011-03-18T17:18:36.167 回答
3

为什么不使用 behat ( http://behat.org/ )?

它应该具有您上面列出的所有要求,并且是用 php.ini 编写的。

它有一个 SahiDrvier 来处理“浏览器内”测试,还有一个简单的 php 浏览器。

于 2011-04-28T13:04:01.573 回答
2

试试 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)

于 2013-06-13T19:59:05.853 回答
1

更新:看起来 Akephalos 已经有一段时间没有更新了,所以它可能不是使用更新版本的 Capybara 的好解决方案。


使用Capybara ( Webrat 的替代品)和Akephalos(无头浏览器)。Capybara 用于与 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
于 2011-04-28T14:42:54.847 回答
0

如果您正在使用 Cucumber,您还没有使用 Ruby 吗?为什么不使用 celerity 或 culerity?

我使用 Cucumber with Celerity 来测试一个 Struts 2 应用程序以及一个 ColdFusion 8 应用程序。基本上,您使用 Celerity 和 JRuby(包装 HtmlUnit)或在原生 ruby​​ 上运行的 Culerity 来驱动您的浏览器。

我建议查看以下两个项目之一来帮助您入门:

俗气的 UI 测试-相应的博客

WatirMelon 页面对象-相应的博客

于 2011-03-11T19:50:26.220 回答
0

首先,您应该使用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
于 2012-07-23T19:29:17.157 回答