12

我目前使用 Watir-webdriver 进行所有前端测试,但开发团队使用 Capybara 在 Jenkins CI 上运行测试。我们都使用相同的 Cucumber 功能。

值得我们做两次单独的测试并有效地进行两次测试吗?哪个是更好的工具?我已经阅读了网络上所有可用的比较,并且更喜欢使用 watir-webdriver,但是 Capybara 允许我无缝地使用无头测试。

那么有什么有用的想法和想法吗?我正处于十字路口,不确定是否要放弃 Watir-webdriver 并与开发团队的其他成员一起使用 Capybara。

4

3 回答 3

6

至于是否对相同的黄瓜功能使用两种不同的工具取决于测试域以及最适合它的方法。如果 Watir-webdriver 比 Capybara-webdriver 更适合前端测试,反之亦然。您需要花一些时间来研究 Capybara(一种设计高峰,用敏捷的说法),以将其与您所习惯的进行比较。尽量保持客观,即使使用熟悉的框架(根据我的经验)非常困难,然后对变化进行成本效益分析。直接成本可能只是时间/精力,但它仍然是会影响项目交付的成本。

Capybara 与 DRY 编程并非不兼容 - Capybara 的自定义选择器可以使用抽象层(如 Abe 在他的回复中提到的)。一旦创建了这些,您就可以像这样在自定义选择器上使用水豚查找器和匹配器;

Capybara.add_selector(:slide_show) do
  xpath { ".//div[contains(@class,'slideshow')]" }
end

Capybara.add_selector(:slide_show_element) do
  xpath { ".//div[contains(@class,'slideshowelem')]" }
end

允许您使用 Capybara 的查找;

find(:slide_show_element, 'Sunset').click

从 Cucumber 的角度来看,可以将定位符字符串从台阶中穿过;

And I Click "Sunset" in the "Holiday Pictures" Slide Show

通过这样的步骤定义;

Given /^(?:I |)Click "(.*?)" in the "(.*?)" Slide Show$/i do |picture,slideshow|
   within(:slide_show, slideshow) do 
     find(:slide_show_element, picture).click
   end
end

所以,问题仍然是流程之一 - 是否有两个框架会影响您的工作流程?调和两者是否会造成不可接受的时间损失?

于 2013-05-01T10:20:11.677 回答
2

我们正在就我当前的项目进行完全相同的讨论。其中一位开发人员是 Capybara 的忠实粉丝,而我熟悉的是 Watir-webdriver。

Capybara 非常简单,可以非常快速地启动和运行测试,但我担心随着时间的推移会出现维护问题,而且我还担心它的简单性也可能意味着缺乏灵活性。

Watir-webdriver 允许我为我的网页编写一个抽象层,准确地识别我想要/需要的元素(灵活性),这也意味着“测试”层对于编写测试场景的人来说仍然看起来很简单,比如Capybara,但随着时间的推移,维护会很快,因为代码本质上是保持 DRY 的。编写该页面元素层需要更多的前期成本,但我有一种安全感,即框架的未来维护将很快。

当然,我有偏见——但思想开放。我很想听听一位水豚粉丝的反驳。

于 2012-12-21T15:37:56.453 回答
1

如果你在 Linux 上,你可以使用 watir-webdriver 运行真正的无头浏览器:http ://watirwebdriver.com/headless/

如果您想要这样做,可能有一种方法可以使用 watir-webdriver 运行无头浏览器。

使用一种工具还是两者都更好取决于您的上下文。使用这两种工具有什么问题吗?

于 2012-12-21T15:01:39.170 回答