1

我对 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 中是否有更好的方法来做到这一点?

4

2 回答 2

1

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

所以...添加

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

实际上会将它们传递到您的 ARGV 中,并且您需要手动处理它们。将这些参数放入工厂类中以获取适当的 Selenium 实例对我有用。

于 2009-04-18T02:41:08.973 回答
0

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

于 2009-04-18T03:02:00.717 回答