我可以在不重置浏览器状态的情况下按顺序运行多个RSpec / Selenium测试吗?

时间:2010-08-23 20:07:38

标签: ruby-on-rails selenium rspec acceptance-testing capybara

所以我刚开始使用Steak,而后者则使用Capybara,后者又使用Selenium。

所以我听说RSpec的做法很好,可以将测试分成许多小条款,每个条款都测试一小段功能。但是它会使测试运行花费更长的时间,因为每次测试都会重复相同的步骤。

说我正在测试一些ajax功能。我想测试一下:

  • 点击某个链接时会出现一个表单
  • 如果我向该表单提交无效输入,则会显示
  • 错误消息
  • 如果我提交有效输入等,则会显示确认消息。

但如果我把每个东西分解成自己的测试用例,那么Selenium必须从头开始:它必须加载相同的页面三次,点击链接使表单出现三次,等等。让我感到浪费。

我希望能够做的是指定一系列保持浏览器状态的测试,因此每个测试都会继续前一个测试。这可能吗?

1 个答案:

答案 0 :(得分:1)

有可能。 一种方法是覆盖Capybara的访问方法并跟踪最后一个url,只有在它发生变化时才重新访问。

有些事情:

module Capybara
  alias original_visit visit
  def visit(url)
    original_visit url if url != $last_url
    $last_url = url
  end
end

但如果你真的知道自己在做什么,那么你应该这样做......