使用Ruby的Test :: Selenium单元进行数据驱动测试

时间:2009-04-18 00:52:57

标签: ruby unit-testing selenium rake testunit

我对Ruby和Selenium都很陌生,我只想弄清楚构建测试工具的最佳方法。我正在使用Rake,Rake :: TestTask和Test :: Unit来支持这一点。我有一个套件,我想为每个浏览器/操作系统组合运行一次。我无法弄清楚如何参数化我的测试,我已经习惯了Junit4和TestNG。

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中更好的方法吗?

2 个答案:

答案 0 :(得分:1)

经过大量挖掘,我发现了一个没有记录的功能。 Test :: Unit测试运行器除了在命令行上执行测试用例之外不做任何事情,依赖于自动运行器来运行该类特定类的任何案例。因此,当他们在之后说什么 - 将作为选项传递时,它们意味着命令行选项,而不是某些变量或参数。

...这样 加入

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

实际上会将这些传递到您的ARGV中,您需要手动处理它们。拿起那些args并将它们扔进工厂类来获取适当的Selenium实例对我有用。

答案 1 :(得分:0)

这可能不是你要问的。但我已经在Python中解决了完全相同的问题,并在其中发表了博客 Parameterizing Your Tests。我相信你可以在Ruby中使用相同的方法,不确定它与你所做的相比。我很想知道其他人是如何解决这个问题的,并且没有找到太多的文档。

相关问题