SpecFlow-是否可以重用功能文件中的测试数据?

卢卡斯·吕西克(Lukasz Lysik)

有什么方法可以重用SpecFlow功能文件中的数据吗?例如,我有两种情况,它们都使用相同的数据表:

Scenario: Some scenario 1
  Given I have a data table
     | Field Name | Value |
     | Name       | "Tom" |
     | Age        |  16   |
  When ...

Scenario: Some scenario 2
  Given I have a data table
     | Field Name | Value |
     | Name       | "Tom" |
     | Age        |  16   |
  And I have another data table
     | Field Name | Value     |
     | Brand      | "Volvo"   |
     | City       |  "London" |
  When ...

在这些简单的示例中,表很小并且没有大问题,但是在我的情况下,表有20多个行,每个表将至少用于5个测试中。

我想像这样的事情:

Having data table "Employee"
     | Field Name | Value |
     | Name       | "Tom" |
     | Age        |  16   |

Scenario: Some scenario 1
  Given I have a data table "Employee"
  When ...

Scenario: Some scenario 2
  Given I have a data table "Employee"
  And I have another data table
     | Field Name | Value     |
     | Brand      | "Volvo"   |
     | City       |  "London" |
  When ...

我在SpecFlow文档中找不到类似的内容。共享数据的唯一建议是将其放入*.cs文件中。但是,我不能这样做,因为功能文件将由非技术人员使用。

詹姆斯·麦卡登(James McCalden)

背景是放置此类通用数据的地方,直到数据过大并且您的“背景”部分最终跨越了多个页面为止。听起来您可能是这样。

您提到的表每个都有20多个行,并且有几个这样的数据表。在进入场景之前,读者需要花很多时间来了解这些背景知识。您还有另一种描述数据的方式吗?过去,当我拥有这样的数据表时,我将详细信息放入自动化代码中的fixtures类中,然后仅在Feature文件中描述了重要方面。

举例来说,假设“汤姆”是潜在的购车者,并且您正在经营某种汽车展示厅,那么他的数据表可能包括:

| Field         | Value |
| Name          | Tom   |
| Age           | 16    |
| Address       | ....  |
| Phone Number  | ....  |
| Fav Colour    | Red   |
| Country       | UK    |

您的方案2可能是“ 18岁以下的孩子不应该买车”(至少在英国是这样)。在这种情况下,我们不必关心汤姆的地址电话号码,而只关心他的年龄。我们可以将这种情况编写为:

Scenario: Under 18s shouldnt be able to buy a car
    Given there is a customer "Tom" who is under 16
    When he tries to buy a car
    Then I should politely refuse

与其将汤姆详细信息的表格保留在功能文件中,我们仅引用重要部分。当该Given步骤运行时,自动化可以从我们的灯具中查找“ Tom”。该步骤参考了他的年龄,以便a)对特征文件的读取者来说,汤姆(Tom)是谁是清楚的;以及b)确保固定装置数据仍然有效。

该场景的读者将立即了解Tom(他16岁)的重要性,并且他们不必在场景和背景之间不断引用。其他方案也可以使用Tom,如果他们对他的信息的其他方面(例如地址)感兴趣,则可以指定相关信息Given there is a customer "Tom" who lives at 10 Downing Street

哪种方法最好取决于您拥有多少数据。如果在几个表中只有少量字段,则将其放在后台,但是一旦它变成10个以上字段或大量表(假定我们有很多潜在客户),那么我建议将其移到功能文件,并仅描述每个场景中的相关信息。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章