0

所以我刚开始使用 Steak,它又使用 Capybara,而 Capybara 又使用 Selenium。

因此,我听说将测试拆分为许多小的 it 子句是一种很好的 RSpec 做法,每个子句都测试一小部分功能。但是它会使测试运行花费更长的时间,因为每次测试都会重复相同的步骤。

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

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

但是如果我把这些东西都分解成自己的测试用例,那么 Selenium 必须从头开始:它必须加载相同的页面 3 次,单击链接以使表单出现 3 次,等等。这让我印象深刻浪费。

我想做的是指定一系列保留浏览器状态的测试,因此每个测试都会从前一个测试中断的地方继续。那可能吗?

4

1 回答 1

1

有可能的。一种方法是覆盖 Capybara 的访问方法并跟踪最后一个 url 并且仅在它更改时重新访问。

类似于以下内容:

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

但只有当你真的知道自己在做什么时,你才应该这样做......

于 2011-04-01T15:16:03.603 回答