如何在黄瓜中读取文件

时间:2012-12-10 22:25:57

标签: ruby cucumber

我是黄瓜的新手。我有以下场景,我想用黄瓜编码:

Feature: Withdraw Fixed Amount
The "Withdraw Cash" menu contains several fixed amounts to
speed up transactions for users.

Scenario Outline: Withdraw fixed amount
  Given I have <Balance> in my account
  When I choose to withdraw the fixed amount of <Withdrawal>
  Then I should receive <Received> cash
  And the balance of my account should be <Remaining>

Examples:
| Balance | Withdrawal | Received | Remaining |
| $500    | $50        | $50      | $450      |
| $500    | $100       | $100     | $400      |

我想从这样的文件中读取数据(例子:): $ 500; $ 50 ;; $ 50; $ 450 $ 500; $ 100; $ 100; $ 400

我不确定我是否可以从黄瓜的功能文件或步骤定义中读取数据。请问有人可以对此有所了解吗?非常感谢!

2 个答案:

答案 0 :(得分:1)

在Cucumber中无法“生成”方案。示例表中的每一行都作为单独的场景运行,而Cucumber必须事先知道要运行哪些场景。

那说,有两种可能性,我认为两者都没有吸引力:

  • 在一个步骤中将整个场景写入代码中,例如:

    Scenario: Withdraw fixed amount
      Given withdrawing should work correctly
    
    #steps.rb
    Given /^withdrawing should work correctly$/ do
      # Read values from file
      # For each row in the file, do everything the scenario would do
    end
    

    这样做有效,但是通过Gherkin功能显示关于系统行为的 nothing 的严重缺点。

  • 代码生成功能文件。使用ERB等模板语言转换要素文件,插入必要的示例行,作为在运行Cucumber之前发生的任务。有效,但代价是 LOT 的复杂性。

在这两种情况下,您都要删除要素文件中的数字,这会立即否定其作为文档中心来源的功能,读者必须返回“数字”文件才能找出实际行为。系统。

答案 1 :(得分:0)

你要求的是矫枉过正。这里的示例可以帮助您以清晰的格式识别可能的情况,但不能用于海量数据处理。

示例中的每一行都应该有意义,否则就是在浪费资源。

例如。 100美元的余额,20美元的退款应该留下80美元。但20美元可能是一个硬编码的数字,所以你还需要一个案例来核实,比如说要退出30美元。

ATM系统的每日取款限额为1000美元。所以,如果你要1200美元,系统应该只给你1000美元。你需要另一行来测试它。

上述每个案例都很有意义。而且我认为你需要一个CSV文件才能处理它。手动打字就足够了。