我不想让你感到困惑,所以我想做的是以下几点:
我有三种环境:
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
如果可以,我可以切换环境而无需重写所有测试用例。
希望你能帮助我,我真的需要这样做。
答案 0 :(得分:3)
YAML是一种用于处理配置信息的出色数据序列化语言。它comes with Ruby所以你只需这样做:
require 'yaml'
将其加载,然后输入:
configuration = YAML::load_file('path/to/yamldata.yaml')
所有配置数据都将在configuration
变量中提供。
通常我会通过编写一些Ruby代码为我的YAML文件创建一个存根,定义包含它的配置哈希,然后告诉YAML为我生成文件。 load_file
的{{3}}和dump
的{{1}}。
对于你正在做的事情,我会创建一个像:
这样的哈希configuration = {
'env1' => "www.env1.com",
'env2' => "www.env2.com",
'env3' => "www.env3.com",
}
使用YAML :: dump(配置)返回:
---
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'
以使用env2或env3。
Rails使用YAML使一个文件处理应用程序的开发,测试和生产信息。在工作中我使用它做类似的事情,其中一个文件包含我们的应用程序的开发和生产环境信息,以及我们需要维护的一些哈希的定义,但不希望必须修改代码来执行此操作。 / p>