如何使用Cucumber/Capybara从txt/xls文件导入数据?
问题描述:
我是新来的黄瓜/水豚,我想知道我如何导入使用黄瓜/水豚如何使用Cucumber/Capybara从txt/xls文件导入数据?
比如我需要使用下一个场景来上传多个文件相继从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这将是更容易,然后重复每个文件场景
答
我不知道我理解你的问题。为了澄清,你是否说你想为几个文件做同样的基本事情?如果是这样,这是我会怎么做:
特点:
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
这是假设你使用一些其他方案中的其他步骤。如果您不是,则只需定义“从路径”“'上传名为”“的视频即可。
如果这不能回答你的问题,请让我知道你需要什么不同,我会看看我是否可以帮忙。
你很近,但我想从外部文件导入数据? ,你刚做的手术名称是什么? –
我会先回答你的第二个问题,因为它是最简单的。首先,我使用了场景大纲而不是常规场景。这可以让您包含任意数量的不同数据点。接下来,我使用'step'关键字来调用第四个关键字的三个步骤定义。这两种方法都是减少重复的好方法。 –
至于你的第一个问题,你为什么需要测试许多不同的数据点?在大多数情况下,这并不是必须的,所以我通常建议将更少的例子放入场景提纲中(如我所说,这个提纲仍然可以是任意长的)。如果有某些原因绝对不是可接受的选项,那么我会创建一个辅助模块(将其保存在您的'features/support'目录中),以便从文件中提取数据并使用常规Ruby对其进行处理。然后,您可以从您的步骤中调用该帮助程序代码。 –