我不想让你感到困惑,所以我想做的是:
我有三个环境:
www.env1.com
www.env2.com
www.env3.com
我想根据运行脚本的环境创建一些东西来定义设置阶段,即:
当前设置:
def setup
@verification_errors = []
@selenium = Selenium::Client::Driver.new(
:host => "localhost",
:port => 4444,
:browser => "*firefox C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe",
:url => "www.env1.com",
:timeout_in_second => 60
)
@selenium.start_new_browser_session
end
我想要的:
def setup
@verification_errors = []
@selenium = Selenium::Client::Driver.new(
:host => "localhost",
:port => 4444,
:browser => "*firefox C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe",
**:url => This parameter configurable from a file or other source.**
:timeout_in_second => 60
)
@selenium.start_new_browser_session
end
如果可能的话,我可以切换环境而不必重新编写所有测试用例。
希望你能帮助我,我真的需要这样做。
YAML是一种用于处理配置信息的出色数据序列化语言。它comes with Ruby所以你只需要做:
require 'yaml'
加载它,然后是这样的:
configuration = YAML::load_file('path/to/yamldata.yaml')
您的所有配置数据都将在 configuration
变量中可用。
通常,我通过编写一些 Ruby 代码为我的 YAML 文件创建 stub ,定义包含它的配置哈希,然后告诉 YAML 为我生成文件。 See the docs用于 load_file
和 dump
的方法。
对于您正在做的事情,我会创建一个散列,例如:
configuration = {
'env1' => "www.env1.com",
'env2' => "www.env2.com",
'env3' => "www.env3.com",
}
使用 YAML::dump(configuration) 返回:
---
env1: www.env1.com
env2: www.env2.com
env3: www.env3.com
您希望将其写入您的 .yaml
文件,然后稍后在运行时加载并像这样访问它:
@selenium = Selenium::Client::Driver.new(
:host => "localhost",
:port => 4444,
:browser => "*firefox C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe",
:timeout_in_second => 60
:url => configuration['env1'],
)
您可以将 'env1'
替换为其他 key 以使用 env2 或 env3。
Rails 使用 YAML 使一个文件处理应用程序的开发、测试和生产信息。在工作中我用它来做类似的事情,其中一个文件包含我们应用程序的开发和生产环境信息,以及我们需要维护的一些哈希的定义,但不想为此修改代码。
我是一名优秀的程序员,十分优秀!