【问题标题】:Passing options and parameters to Test/Unit via Rake::TestTask通过 Rake::TestTask 将选项和参数传递给测试/单元
【发布时间】:2013-03-11 16:13:34
【问题描述】:

所以我一直试图弄清楚这一点,我能想出他的全局变量的最佳解决方案 - 但这看起来很脏,而且 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 擅长确保所有这些都很容易,但事实并非如此好像没有。

我哪里做错了?

【问题讨论】:

    标签: ruby unit-testing webdriver rake


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 我想多线程运行测试。如果我这样做,这种方法似乎会出现问题,特别是如果每​​个测试都为选项采用不同的值。
    猜你喜欢
    • 2019-11-10
    • 2013-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-09
    • 1970-01-01
    • 1970-01-01
    • 2018-11-27
    相关资源
    最近更新 更多