2011-10-04 78 views
3

我有一堆用Ruby編寫的Selenium測試。我用IDE記錄並將HTML測試導出爲Ruby(Test :: Unit)測試。在我的TestingProject(在NetBeans中創建的Ruby項目)中,我只需創建一個新文件(TestFile.rb)並複製/粘貼從Selenium IDE導出的錄製內容。一段時間後,我有幾個文件每個測試我們的應用程序的不同部分。如何創建一個用Ruby編寫的Selenium測試套件?

TestFile1.rb 
TestFile2.rb 
TestFile3.rb 

目前運行的測試我有一個main.rb的文件,我這麼稱呼這些測試文件,如:

#file name: main.rb 
require "./FolderName/TestFile1.rb" 
require "./FolderName/TestFile2.rb" 
require "./FolderName/TestFile3.rb" 

在紅寶石「規定」方法需要一個文件,並執行的名字內容爲ruby代碼。此方法維護它已經處理的文件列表,因此它不會多次運行這些文件中的任何一個。但是,我無法控制文件執行時的順序,也無法重新運行某些文件而無需聲明它們兩次。如何爲我的測試(編程)創建一個真正的測試套件?請包括步驟。謝謝。

PS:This:Create JUnit TestSuite in a non-static way對我沒有幫助。我希望在我的示例中使用步驟。謝謝。

回答

0

,直到找到一個更好的答案,你可以使用eval在有些貧民窟的方式做到這一點...

def test1 
    eval(File.open(File.expand_path('~/FolderName/TestFile1.rb')).read) 
end 

def test2 
    eval(File.open(File.expand_path('~/FolderName/TestFile2.rb')).read) 
end 

def test3 
    eval(File.open(File.expand_path('~/FolderName/TestFile3.rb')).read) 
end 

test1 
test2 
test3 
test1 
#etc 

就像我說的,這是錯誤的方式做到這一點,但希望當有人看到我的可怕這樣做的方式,他們會提供更好的。

+0

這是一個不錯的嘗試,但不幸的是它並沒有爲我工作。即使我運行了test1,然後運行了test2,這些文件仍以自己的順序執行。在輸出中,我可以清楚地看到它運行test2,然後運行test1。 – AdamT

0

這個怎麼樣?抓住測試腳本文件並以任何方式排序(在這種情況下按字母順序排列),然後只運行一次。

scripts = DIR.entries('~/FolderName').select { |e| e =~ /.+\.rb/ } 
scripts.sort.each { |s| `#{RUBY} s`} 
相關問題