2012-07-10 49 views
2

我正在用watir-webdriver运行自动化测试。 我不能通过测试单元传递命令行参数ARGV,我得到一个ArgumentError。无法通过测试单元(红宝石)通过ARGV

require 'rubygems' 
require 'watir-webdriver' 
require 'test/unit'  
ARGV.each do |arg| 
     if arg.downcase.include? 'chrome' 
      $browser = 'chrome' 
     elsif arg.downcase.include? 'firefox' 
      $browser = 'firefox' 
     elsif arg.downcase.include? 'ff' 
      $browser = 'firefox' 
     elsif arg.downcase.include? 'ie' 
      $browser = 'ie' 
     end 
    end 

class TEST_SITE < Test::Unit::TestCase 
    def setup 
    if $browser == 'chrome' 
     $b = Watir::Browser.new :chrome 
    elsif $browser == 'firefox' 
     $b = Watir::Browser.new :ff 
    elsif $browser == 'ie' 
     $b = Watir::Browser.new :ie 
    end 
    end 
end 

是否有另一种选择或以某种方式覆盖测试单元类?

+1

您的代码为我工作。我使用'ruby filename.rb ff'等来调用它。 – 2012-07-10 19:46:06

+0

你是通过rake调用它吗? – phoet 2012-07-10 19:47:37

+0

我通过命令行'ruby filename.rb chrome'调用它。 @JustinKo,你是否也包含了所需的文件? – 2012-07-10 20:08:56

回答

1

测试/单元似乎有关于如何处理ARGV中的值的逻辑,尽管不完全确定它正在检查的值。但是,如果您将参数设置为更多参数,它们会被测试/单元忽略,并且您的测试应该运行。

尝试从命令行运行下面的(你不应该需要改变你的代码):

ruby filename.rb -browser=ff