2009-04-18 70 views
1

對於Ruby和Selenium我都很新,我只是想弄清楚構建測試工具的最佳方法。我使用Rake,Rake :: TestTask和Test :: Unit來提供這個功能。我有一套我想爲每個瀏覽器/操作系統組合運行一次的套件。我無法弄清楚如何參數化我的測試,我已經習慣了Junit4和TestNG。使用Ruby的測試進行數據驅動測試:: Selenium的單元

require 'rake' 
require 'rake/testtask' 

browsers = ['IE on Windows', 'Firefox on Windows', 'Firefox on Mac', 'Safari on Mac'] 

task :default => [:run_tasks] 

task :create_tasks do 
    browsers.each do |browser|  
    Rake::TestTask.new("selenium_units:#{browser}") do |t| 
     t.libs << "lib" 
     t.pattern = 'test/*_test.rb' 
     t.verbose = true 
     t.warning = true 
     t.opts = "BROWSER=\"#{browser}\"" 
    end 
    end 
end 

task :run_tasks => [:create_tasks] 
task :run_tasks => browsers.map { |e| "selenium_units:"+ e } 

我真的很希望能夠在我的套件或案例的設置中讀取BROWSER =。任何建議,或者有沒有一種更好的方式在Ruby中做到這一點?

回答

1

經過很多挖掘源代碼後,我發現一個沒有如此記錄的功能。除了在依賴自動運行程序的命令行上執行測試用例來運行該類特定類的任何案例之外,Test :: Unit測試運行器不會執行任何操作。所以,當他們說任何事後 - 將作爲選項傳遞時,它們表示命令行選項,而不是某個變量或參數。

所以...... 加入

t.options = '-- -foo -bar=baz' 

真要傳遞這些到您的argv和你預計手動處理它們。拿這些參數並將它們投入工廠類以獲取適當的Selenium實例將適用於我。

+0

http://stackoverflow.com/questions/28110384/how-to-parse-rake-arguments-with-optionparser – djangofan 2015-06-13 19:35:24

+0

http://stackoverflow.com/questions/825748/how-do-i-pass-command -line-arguments-to-rake-task/825832#825832 – djangofan 2015-06-13 19:39:37

0

這可能不是你要求的。但我已經解決了Python中的完全相同的問題,並在 Parameterizing Your Tests中對此進行了博客。我相信你可以在Ruby中使用相同的方法,不確定它與你所做的相比如何。我很想知道其他人如何解決這個問題,但沒有找到很多文檔。

相關問題