• 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/

  • 相关阅读:
    CentOS 7.x时间同步服务chrony配置详解
    Kerbernetes使用ConfigMap资源配置非铭感信息
    Kerbernetes的volume应用进阶
    Kerbernetes的volume基础应用
    Kerbernetes的Ingress资源管理
    Kerbernetes的Service资源管理
    Kerbernetes的Pod控制器
    一份较为详细的深度学习资料汇总
    相见恨晚的网站
    Bert 时代的创新(应用篇):Bert 在 NLP 各领域的
  • 原文地址:https://www.cnblogs.com/ouguangqian/p/Hashes_to_OpenStruct.html
Copyright © 2020-2023  润新知