所以我一直试图解决这个问题,并且我可以提出他的全局变量的最佳解决方案 - 但这看起来很脏,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很擅长确保所有这些都很容易,但它确实没有似乎是。
我哪里出错?
答案 0 :(得分:1)
我使用YAML文件来存储我的配置(浏览器配置,包括URL在内的环境等)。
您还可以使用环境变量来定义简单配置。您可以通过Ruby中的ENV['foobar']
访问环境变量。
因此,例如,我的浏览器调用在我的安装方法中可能看起来像这样:
driver = Selenium::WebDriver.for (ENV['SWD_BROWSER'] || "firefox").to_sym
并在我的Rake文件中(或在shell控制台中)定义要使用的环境变量。