2010-08-23 45 views
0

所以我剛開始使用牛排,後者反過來使用水豚,反過來使用硒。我可以在不重置瀏覽器狀態的情況下依次運行多個RSpec/Selenium測試嗎?

所以我聽說很好的RSpec實踐將測試分成許多小的子句,每個測試都有一小部分功能。但是,這會讓測試運行花費更長時間,因爲每次測試都會重複相同的步驟。

說我正在測試一些ajax功能。我想測試:

  • 當我點擊某個環節
  • 出現錯誤信息,如果我提交無效輸入到表格
  • 如果我提交有效輸入出現確認信息等形式出現

但是,如果我有各自的那些東西分解成它自己的測試情況,那麼硒有從頭開始:它有三次加載相同頁面,點擊鏈接,使形式出現3次,等等。它讓我感到很浪費。

我希望能夠做的是指定一個保存瀏覽器狀態的測試序列,因此每個測試都會在前一個測試停止的地方繼續。那可能嗎?

回答

1

這是可能的。 一種方法是覆蓋Capybara的訪問方法並跟蹤最後一個URL,並且只有在更改時纔會重新訪問。

東西線沿線的:

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

但只應做,如果你真的知道你在做什麼?

+0

最後一句是可操作的。 ;-)當頁面狀態發生任何變化時,這顯然會以微妙的方式失敗,所以我寧願不要嘗試這樣做。 (我認爲訪問方法會順便進入Capybara :: Session。) – 2011-04-08 21:09:22

相關問題