【问题标题】:Cucumber: How to pass an entire example table as value to another example table in each iterationCucumber:如何在每次迭代中将整个示例表作为值传递给另一个示例表
【发布时间】:2018-05-02 22:05:26
【问题描述】:

我正在尝试找出是否可以解决我的验证问题。已经用类似的东西替换了实际步骤。

是否可以定义示例表,并将整个表作为数据传递给每次迭代?

我有大量要验证的子元素,因此我不想在每次迭代中定义子元素数据,并用分隔符分隔。

这里是示例场景

ScenarioOutLine: Validate POST call for XXX to have valid sub elements under each element 

Given Request headers are set 
When Request is posted
Then the response body content has element <ele_name> with sub elements <Sub_ele>

Examples:
|elem_name>|<Sub_ele>|
|Dept|{Dept_Sub_elements}|
|Subject|{Subject_Sub_elements}
|Course|{Course_Sub_elements}|

Examples:
|Dept_Sub_Elements|
|IT|
|Marketing|

Examples:
|Subject_Sub_Elements|
|Anatomy|
|Physciology|
|Management,economics|

【问题讨论】:

    标签: cucumber gherkin


    【解决方案1】:

    我会隐藏步骤中的所有强制验证,在每个场景之后我总是调用一种方法,并且不会用它污染我的功能文件。强制性元素应始终存在。当您讨论最终用户真正关心的系统实际功能时,它们并不重要。

    BDD 和 Cucumber 都是关于沟通的,而不是关于测试的。

    我总是努力隐藏我的场景中的技术细节,因为它们需要业务代表理解。技术细节属于步骤委托给的步骤或帮助代码。从我的角度来看,您的强制性元素是一个技术细节。

    【讨论】:

      【解决方案2】:

      您可以在所需的 Given、When 或 Then 步骤之后使用 DataTable。 见参考:https://cucumber.io/docs/reference#data-tables

      根据您使用的语言,您应该能够在线找到示例。下面是一个规范流的例子:

      Having Tables in Example Table in SpecFlow

      如果您有庞大的数据表(数百行),那么您可以考虑将数据保存在不同的文件中(属性文件、json 文件,甚至是 excel 文件)

      对于较小的表,可以在 .feature 文件中提及它们。为了使其更易于阅读,您可以使用 intellij 或 eclipse 的表格格式化程序插件。 例如 https://plugins.jetbrains.com/plugin/7550-pipe-table-formatter

      【讨论】:

      • 如果你有巨大的表要验证,你或许应该问问自己为什么要使用 Cucumber 来做这个(因为你显然没有从 BDD 方面或围绕功能文件的讨论中受益),而不仅仅是使用单元测试框架之类的东西来运行这些测试。
      【解决方案3】:

      为什么不只使用一个示例表作为验证步骤的输入?由于示例表中的任何内容都不会更改给定或 when 语句,因此多次运行此场景没有任何价值。

      即使您多次运行它,我认为您尝试做的事情没有任何价值,而且它只会让人类更难理解这些示例。鉴于 BDD 的全部意义在于围绕功能文件和那里的场景与利益相关者进行对话,任何使人类更难理解示例的东西通常都是 BDD 和 Cucumber 所关心的难闻的气味。因此,在尝试干燥表方面存在负值

      Then the resulting page should have <Sub_element> found under <Element>:
        | <Element> | <Sub_element>        |
        | Dept      | IT                   |
        | Dept      | Marketing            |
        | Subject   | Anatomy              |
        | Subject   | Physciology          |
        | Subject   | Management,Economics |
        | Course    | CompSci 210          |
        | Course    | Math 101             |
      

      【讨论】:

        猜你喜欢
        • 2021-02-17
        • 1970-01-01
        • 1970-01-01
        • 2014-10-28
        • 2020-09-06
        • 2019-08-08
        • 1970-01-01
        • 1970-01-01
        • 2016-08-27
        相关资源
        最近更新 更多