通过ruby编写测试脚本的时候,我还是喜欢采用yml来管理测试数据,就像以前的文章(Selenium WebDriver + Grid2 + RSpec之旅(五))提到的一样,但是在引用yml中的数据的时候采用

name = @data["data"]["logindata"]["wrong"]["username"]的方法显得非常臃肿,不方便阅读。

下面就通过定义一个函数来简化一下数据的引用

 def hashes2ostruct(object)
return case object
when Hash
object = object.clone
object.each do |key,value|
object[key] = hashes2ostruct(value)
end
OpenStruct.new(object)
when Array
object = object.clone
object.map! {|i| hashes2ostruct(i) }
else
object
end
end

然后在加载yml文件的时候就通过这个函数来装饰一下,再次引用变量的时候就显得轻便多了

 #encoding:utf-8
require 'selenium-webdriver'
require 'rspec'
require 'yaml'
require 'ostruct' require File.dirname(__FILE__)+'/../../public/public'
require File.dirname(__FILE__)+'/../tool/login_dialog'
require File.dirname(__FILE__)+'/../action/login_page' def hashes2ostruct(object)
return case object
when Hash
object = object.clone
object.each do |key,value|
object[key] = hashes2ostruct(value)
end
OpenStruct.new(object)
when Array
object = object.clone
object.map! {|i| hashes2ostruct(i) }
else
object
end
end describe 'cnblogs main login page' do
include Login_Dialog before (:all) do
@data = hashes2ostruct(YAML.load (File.open(File.dirname(__FILE__)+'/../config/login_data.yml')))
end
#此处省略相对多余代码 context 'input the wrong passwd' do
it 'login failed,and return "用户名或密码错误"' do
name = @data.data.logindata.wrong.username
end
end
end

这样就清爽了吧,就像憋了好久的大便,一下子释放出来的感觉!(哈哈! 这个比喻有点太伤大雅了),希望对大家有用。
详情请访问http://www.dribin.org/dave/blog/archives/2006/11/17/hashes_to_ostruct/

最新文章

  1. [EasyUI美化换肤]更换EasyUi图标
  2. windows下 nvm下载node被墙了解决办法
  3. X.509,RSA,PKCS 普及
  4. Asp.net MVC 学习系列(一)序
  5. [BZOJ1564][NOI2009]二叉查找树(区间DP)
  6. java/c# 判断点是否在多边形区域内
  7. suse10的网络配置(静态IP)
  8. Oracle中TO_DATE格式
  9. UVA 11354 Bond(MST + LCA)
  10. Power Station POJ 4045
  11. Android导航菜单横向左右滑动并和下方的控件实现联动
  12. 一个只能用在Win下的密码验证函数(显示星号,可删除)
  13. hive权威指南<一>
  14. C++一些基本数据结构:字面常量、符号常量、枚举常量
  15. react-native-echarts在打包时出现的坑
  16. 用STM32CudeMX 配置用到的函数(记住他!)
  17. [SQL]某数据库中查出包含 字段名 的所有表名
  18. java---->Itellij idea报错:错误: 找不到或无法加载主类 main
  19. 代码动态设置edittext输入类型为密码类型
  20. 【Shell脚本编程系列】知识储备以及建立规范的脚本

热门文章

  1. 13_输出映射1_resultType
  2. VIM 及正则表达式
  3. (hdu)1160 FatMouse's Speed
  4. MVC的发展
  5. compass sprite
  6. C# 获取随机可用端口号
  7. ubuntu导出文件
  8. 从xib加载文件
  9. 一周一话题之三(Windows服务、批处理项目实战)
  10. 快速搭建Web服务器软件PHP+Apache+MySQL