代码之家  ›  专栏  ›  技术社区  ›  Trey

使用Ruby的Test::Unit for Selenium进行数据驱动测试

  •  1
  • Trey  · 技术社区  · 17 年前

    我对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 回复  |  直到 14 年前
        1
  •  1
  •   Trey    17 年前

    在对源代码进行了大量挖掘之后,我发现了一个不太成文的特性。单元测试运行程序除了依靠自动运行程序在命令行上执行您的测试用例以运行该类特定类的任何用例之外,什么都不做。所以,当他们说后面的任何内容都将作为选项传递时,他们指的是命令行选项,而不是一些变量或参数。

    添加

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

        2
  •  0
  •   airportyh    17 年前

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