0

我是黄瓜的新手。我想在黄瓜中编写以下场景:

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

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

4

2 回答 2

1

,不可能在 Cucumber 中“生成”场景。示例表中的每一行都作为一个单独的场景运行,Cucumber 必须预先知道要运行哪些场景。

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

  • 在一个步骤中用代码编写整个场景 def 例如:

    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 功能无法揭示系统的行为。

  • 代码生成功能文件。使用诸如 ERB 之类的模板语言来转换特征文件,插入任何必要的示例行,作为运行 Cucumber 之前发生的任务。有效,但代价是很多复杂性。

在这两种情况下,您都从功能文件中删除了数字,这立即否定了它作为文档中心来源的功能,读者必须重新参考“数字”文件才能弄清楚系统的实际行为。

于 2012-12-10T23:49:43.447 回答
0

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

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

例如。余额为 100 美元,提取 20 美元应留下 80 美元。但是 20 美元可能是一个硬编码的数字,因此您需要另外一个案例来验证这一点,比如提取 30 美元。

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

上面的每个案例都是有意义的。而且我认为在很多情况下您都不需要 CSV 文件来处理它。手动打字就足够了。

于 2012-12-11T05:18:32.773 回答