1

所以我一直试图弄清楚这一点,我能想出他的全局变量的最佳解决方案——但这看起来很脏,而且 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,我想传入一个浏览器类型和一个 url 等……有时我想要 ff,有时我想要 chrome……有时是这个 URL,有时是那个……取决于日期等。

最简单的事情似乎是这样的:

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

然后让 Thing.new() 查找我的全局变量:

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

这似乎草率..而且我觉得不对劲。我仍在努力让这个“测试工具”启动并运行,并希望第一次就做好。这就是我选择 Rake 的原因,基于很多其他反馈。

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

我哪里做错了?

4

1 回答 1

1

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

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

因此,例如,我的浏览器调用在我的设置方法中可能如下所示:

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

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

于 2013-03-29T19:17:27.363 回答