访问Cucumber

时间:2015-08-18 17:19:09

标签: ruby yaml

我正在编写一些黄瓜测试,为了测试不同的场景,我设置了一个config.yml文件。我使用:

将它加载到我的env.rb中
require 'calabash-cucumber/cucumber'
require 'yaml'

# Config file to hold user settings
#CONFIG = YAML::load_file(File.join(File.dirname(File.expand_path(__FILE__)), 'config.yml'))
CONFIG = YAML.load_file("features/support/config.yml")

注释掉的行是我尝试加载文件的另一种变体。

当我调用数据时,我这样做:

@userName = CONFIG[env.to_sym][side.to_sym][type.to_sym][:username]

然而,当它到达这一行时,它会给我以下错误:

"undefined method '[]' for nil:NilClass (NoMethodError)"

[]是控制台中的空方框。)

我不确定如何纠正这个问题,我99%确定我正确加载YAML文件并正确使用它。

任何想法或建议都会很棒!

编辑:示例YAML数据:

:env:
    :side:
        type:
            :username: "username"

1 个答案:

答案 0 :(得分:0)

假设你有config.yml档案:

env:
  side:
    type:
      username: 'User'

YAML.load_file()默认情况下不会对哈希进行符号化,因此您需要使用字符串而不是符号来访问值。

puts @userName = CONFIG['env']['side']['type']['username']
#=> User

<强>更新

the Tin Man所述,它取决于您的YML文件的外观。

加载此yml文件会产生符号化哈希:

:env:
  :side:
    :type:
      :username: 'User'

因此,如果您想访问用户名密钥:

@userName = CONFIG[:env][:side][:type][:username]