如何使您的CSV文件成为您的ruby cucumber数据存储库

如何使您的CSV文件成为您的ruby cucumber数据存储库,ruby,csv,cucumber,Ruby,Csv,Cucumber,我刚开始使用ruby cucumber,我希望有一个像csv文件一样的数据存储库,在那里我可以添加所有数据,这样它将易于维护,并且不会硬编码到我的功能文件中 有人能给我指出正确的方向吗?怎样才能做到这一点 我看到的大多数场景都是这样的 我想把它做成这样 在我的CSV文件中,它可以查找id“website\u a”并选择数据“google.com”不要为此使用CSV。传输数据时CSV正常,但用于配置数据时缺少CSV 而是使用。它易于阅读,非常适合配置文件。作为标准库的一部分 以下是如何开始: re

我刚开始使用ruby cucumber,我希望有一个像csv文件一样的数据存储库,在那里我可以添加所有数据,这样它将易于维护,并且不会硬编码到我的功能文件中

有人能给我指出正确的方向吗?怎样才能做到这一点

我看到的大多数场景都是这样的

我想把它做成这样


在我的CSV文件中,它可以查找id“website\u a”并选择数据“google.com”

不要为此使用CSV。传输数据时CSV正常,但用于配置数据时缺少CSV

而是使用。它易于阅读,非常适合配置文件。作为标准库的一部分

以下是如何开始:

require 'yaml'

data = {
  'string' => 'foo',
  'array_of_ints' => [1,2,3],
  'int' => 0,
  'boolean' => true
}

puts data.to_yaml
# >> ---
# >> string: foo
# >> array_of_ints:
# >> - 1
# >> - 2
# >> - 3
# >> int: 0
# >> boolean: true
您可以看到它很容易阅读,而且因为它是文本,所以使用编辑器修改YAML文件也很容易。重新加载数据同样容易。如果修改上述代码以写入文件,则可以重新加载数据并接收包含数据的Ruby对象:

require 'yaml'

data = {
  'string' => 'foo',
  'array_of_ints' => [1,2,3],
  'int' => 0,
  'boolean' => true
}

File.write('data.yaml', data.to_yaml)

loaded_data = YAML.load_file('data.yaml')
loaded_data # => {"string"=>"foo", "array_of_ints"=>[1, 2, 3], "int"=>0, "boolean"=>true}

loaded_data['string'] # => "foo"
loaded_data['array_of_ints'] # => [1, 2, 3]
loaded_data['int'] # => 0
loaded_data['boolean'] # => true
您甚至可以模拟CSV文件,但我不确定您为什么要这样做,因为您必须按顺序或按索引访问记录,而不是通过哈希直接访问记录:

loaded_data = YAML.load(<<EOT)
---
- [Name,         HR, Avg. ]
- [Mark McGwire, 65, 0.278]
- [Sammy Sosa,   63, 0.288]
EOT
loaded_data # => [["Name", "HR", "Avg."], ["Mark McGwire", 65, 0.278], ["Sammy Sosa", 63, 0.288]]

loaded\u data=YAML.load(实际上有许多不同的方法可以处理类似的事情。
我对URL执行此操作的方式是“步骤参数转换”

url_transform.rb(将其放入“支持”文件夹)

然后在我的功能中,我只使用:

Given I go to the "~internet~" page
然后在我的步骤中,我使用:

Given /^I go to the "(.*)" page$/ do |url|
@browser.goto url
puts browser.url
终端输出:

http://the-internet.herokuapp.com/
(你不需要“~”字符,我只是用它们来提醒我它们是‘转换’)


这绝不是最好的解决方案,但如果你是一个初学者,这可能至少对URL来说是一个有用的技巧。

请检查,它们可能是一个不错的折衷方案。有点符合你所描述的。否则,可能会帮助你知道该尝试什么。在cucumber的.rb文件中如何称呼它?
Given I go to the "~internet~" page
Given /^I go to the "(.*)" page$/ do |url|
@browser.goto url
puts browser.url
http://the-internet.herokuapp.com/