如何使用Cucumber / Capybara从txt / xls文件导入数据?

时间:2015-10-19 02:29:50

标签: ruby testing cucumber capybara bdd

我是Cucumber / Capybara的新手,我想知道如何使用Cucumber / Capybara从txt / xls文件导入数据

例如,我需要使用下一个场景一个接一个地上传几个文件:

特征

Scenario: Upload
    When I Choose A name "name"
    When I Choose "/home/path"
    Then I Click Upload

step_definitions

When(/^I Choose A name "([^"]*)"$/) do |title|
  fill_in('video_title', :with => title)
    fill_in('video_description', :with => title)
end

When(/^I Choose "([^"]*)"$/) do |file|
    find(:xpath, '//*[@id="file"]', :visible => false).set(file)
end

Then(/^I Click Upload$/) do
    click_button('Upload')
end

所以,如果我可以添加步骤定义从txt或xls导入,那将更容易,然后为每个文件重复场景

1 个答案:

答案 0 :(得分:1)

我不确定我理解你的问题。为了澄清,你是说你想为几个文件做同样的基本事情吗?如果是这样,我会这样做:

特点:

Scenario Outline: Upload
  When I upload a video named "<name>" from path "<path>"

  Examples:
    | name | path         |
    | foo  | /path/1      |
    | bar  | /path/2      |
    | baz  | /path/3      |

步骤:

When(/^I choose a name "(.*)"$/) do |name|
  fill_in('video_title', :with => name)
  fill_in('video_description', :with => name)
end

When(/^I choose "([^"]*"$/) do |file|
  find(:xpath, '//*[@id="file"]', :visible => false).set(file)
end

When(/^I click "([^"]*"$/ do |button|
  click_button(button)
end

When(/^I upload a video named "[^"]*" from path "[^"]*"$/ do |title, path|
  step 'I choose a name "' + title + '"'
  step 'I choose "' + path + '"'
  step 'I click "Upload"'
end

这假设您正在使用其他方案中的其他步骤。如果你不是,那么只定义一步“我从路径”“上传名为”“的视频会更有意义。

如果这不能解答您的问题,请告诉我您的需求与否,我会看看是否可以提供帮助。