黄瓜测试表长得太长
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 的简洁工具可以对齐管道表,这是一个额外的好处。
我正在研究一组 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 的简洁工具可以对齐管道表,这是一个额外的好处。