黄瓜测试表长得太长

Cucumber test tables grow too long

我正在研究一组 Cucumber 测试,其测试 table 有可能增长很多。下面的示例使用这种形式:

Feature: Login Action with a Named User

Scenario Outline: Succesful first login with valid credentials
Given User is on Foo LoginPage
#   And User has recently registered
When User clicks on Start Session
    And User inputs "<user>" and "<pass>"
Then I validate that "<user_full>" appears as profile name
    And Mi perfil icon is displayed

Examples:
    |user       |pass   |user_full  |
    |foo@bar.com|Test123|Foo Bar    |

我的意思是,通过这个简单的登录,Data Table 具有三个参数。但是当我开始填写表格时,数据 table 可以很容易地增长到三十、四十个参数。

我想到了如下所述重写测试用例。这样,测试中最多有两个参数table:测试用例名称和用户邮箱,这有点像主键。

然后,使用这两个参数从电子表格中获取数据,以填充由其余测试用例访问的 HashMap。

Feature: Login Action with a Named User

Scenario Outline: Succesful first login with valid credentials
Given User is on Foo LoginPage
#   And User has recently registered
When User logs into app with "<user>"
Then I validate user information appears in profile name
    And Mi perfil icon is displayed

Examples:
    |TC_NAME |user       |
    |TC01    |foo@bar.com|
    |TC02    |fee@bar.com|

电子表格如下所示:

Data Pool spreadsheet

有什么想法吗?你有没有使用不同的东西来避免在你的 Cucumber 定义中有一个长数据 table?

如果您的场景 table 中有一长串参数,您很可能做错了什么。

Cucumber 是一种用于对话的工具,与后台测试无关。这是关于拥有可以执行的需求文档。如果没有人能理解该文档(这将很难向右滚动 40 列所需的数量),那么它的编写方式有误。

它要么使用更多场景而不是编写非常复杂的 table,要么缩短您编写的场景(这通常是更好的工作方式)。

在编程方面,excel 工作表、开关语句和对象是使用不同开关一起收集测试数据的好方法。尝试改用这些,不仅一切看起来更干净,而且更容易理解。

根据 Kyle 的回答,我深入研究了 Cucumber 文档,这使我在每个步骤中都使用了内联管道表,而不是在示例部分中使用 40 列,如下所示:

...
Scenario Outline: Compose an email in Gmail
Given I am logged onto gmail with:
 |user | pwd |
 |foo  | bar |
When I click the compose button
 And enter user email, subject and message as:
  |to  | subject | message |
  |fuu | subj    | ...     |
...

可以看到当输入更多字段时,数据变得易于管理。 此外,还有一个名为 Tidy Gherkin 的简洁工具可以对齐管道表,这是一个额外的好处。