zoukankan      html  css  js  c++  java
  • yml文件数据的简洁表达方法(Hashes to OpenStruct)

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

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

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

     1 def hashes2ostruct(object)
     2     return case object
     3     when Hash
     4         object = object.clone
     5         object.each do |key,value|
     6             object[key] = hashes2ostruct(value)
     7         end
     8         OpenStruct.new(object)
     9     when Array
    10         object = object.clone
    11         object.map! {|i| hashes2ostruct(i) }
    12     else
    13         object
    14     end
    15 end

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

     1 #encoding:utf-8
     2 require 'selenium-webdriver'
     3 require 'rspec'
     4 require 'yaml'
     5 require 'ostruct'
     6 
     7 require File.dirname(__FILE__)+'/../../public/public'
     8 require File.dirname(__FILE__)+'/../tool/login_dialog'
     9 require File.dirname(__FILE__)+'/../action/login_page'
    10 
    11 def hashes2ostruct(object)
    12     return case object
    13     when Hash
    14         object = object.clone
    15         object.each do |key,value|
    16             object[key] = hashes2ostruct(value)
    17         end
    18         OpenStruct.new(object)
    19     when Array
    20         object = object.clone
    21         object.map! {|i| hashes2ostruct(i) }
    22     else
    23         object
    24     end
    25 end
    26 
    27 describe 'cnblogs main login page' do
    28     include Login_Dialog
    29     
    30     before (:all) do
    31         @data = hashes2ostruct(YAML.load (File.open(File.dirname(__FILE__)+'/../config/login_data.yml')))
    32     end
    33    #此处省略相对多余代码
    34    
    35     context 'input the wrong passwd' do
    36         it 'login failed,and return "用户名或密码错误"' do
    37             name = @data.data.logindata.wrong.username
    38         end
    39     end
    40 end

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

  • 相关阅读:
    delphi 指针 认识
    delphi Post数据到网页
    delphi将图片转换成Base64编码函数
    delphi 获取windows任务栏的高度
    获取当天是星期几,计算两个日期相隔时间
    博客园样式自定义(待更新)
    redux超易学三篇之三(一个逻辑完整的react-redux)
    redux超易学三篇之二(开始使用react-redux)
    redux超易学三篇之一(单独说redux)
    毕业季
  • 原文地址:https://www.cnblogs.com/ouguangqian/p/Hashes_to_OpenStruct.html
Copyright © 2011-2022 走看看