通过Rake :: TestTask将选项和参数传递给Test / Unit

时间:2013-03-21 22:45:00

标签: ruby unit-testing webdriver rake

所以我一直试图解决这个问题,并且我可以提出他的全局变量的最佳解决方案 - 但这看起来很脏,1974年 - 我是否错过了Rake / Test :: Unit的功能?

我有一个Rake文件,我正在运行测试:

Rake::TestTask.new(:test) do |t|
t.test_files = FileList['test_*.rb']
end

和test_1.rb有类似的内容:

require "test/unit"
class TestStuff < Test::Unit::TestCase
    def setup
              @thingy = Thing.New(parameter1, parameter2)
    end

    def test_this_thing
              @thing.do()
    end

end

我的问题是,Thing.new()需要参数,而这些参数特定于我的环境。实际上,我正在运行Selenium-WebDriver,我想传入一个浏览器类型,一个网址等...有时我想要ff,othertimes我想要chrome ...有时这个URL,有时候......取决于当天等。

最简单的事情似乎做类似的事情:

#all that rake stuff
$parameter1 = x
$parameter2 = y

然后让Thing.new()查看我的全球变量:

        @thingy = Thing.New($parameter1, $parameter2)

这看起来很邋..而且对我来说感觉不对。我仍然试图让这个“测试工具”启动并运行,并希望第一次就做好。这就是为什么我选择Rake,基于很多其他反馈。

请记住,我最终可能会进行100次测试,而且他们都需要获取这些信息......我认为Rake很擅长确保所有这些都很容易,但它确实没有似乎是。

我哪里出错?

1 个答案:

答案 0 :(得分:1)

我使用YAML文件来存储我的配置(浏览器配置,包括URL在内的环境等)。

您还可以使用环境变量来定义简单配置。您可以通过Ruby中的ENV['foobar']访问环境变量。

因此,例如,我的浏览器调用在我的安装方法中可能看起来像这样:

 driver = Selenium::WebDriver.for (ENV['SWD_BROWSER'] || "firefox").to_sym

并在我的Rake文件中(或在shell控制台中)定义要使用的环境变量。