Gherkin 是否可以添加一个“;否则";“之后”;给,什么时候,然后;?

Gherkin 是否可以添加一个“;否则";“之后”;给,什么时候,然后;?,gherkin,Gherkin,我是个新手,尝试着尽可能地写出我的第一个场景,但我经常发现自己处于这样的境地:我真的很想在我的场景中添加一个“Else”。“给予,何时,然后”变为“给予,何时,然后,其他”。我知道“Else”关键字没有定义,因此没有在Gherkin工具中实现,但我不在乎,因为我不使用这些工具 你认为这样写对吗: 例如: Scenario : Application starts Given I start the application When I already have an open sessi

我是个新手,尝试着尽可能地写出我的第一个场景,但我经常发现自己处于这样的境地:我真的很想在我的场景中添加一个“Else”。“给予,何时,然后”变为“给予,何时,然后,其他”。我知道“Else”关键字没有定义,因此没有在Gherkin工具中实现,但我不在乎,因为我不使用这些工具

你认为这样写对吗:

例如:

Scenario : Application starts
  Given I start the application
  When I already have an open session
  Then I see the home screen
  Else I see the login screen
还是最好编写两种不同的场景:

Scenario : Application started by authenticated user
  Given I have an open session
  When I start the application
  Then I see the home screen

Scenario : Application started by unauthenticated user
  Given I don't have an open session
  When I start the application
  Then I see the login screen

简言之,没有,但以下是处理场景多个变体的选项:

  • 如果只是跟踪不同场景步骤的元素,您可以将早期步骤移动到公共“背景”部分,使重复的不同场景更短、更清晰
但从您的示例来看,所有步骤都略有不同,因此您可以:-

  • 接受多个场景的重复

  • 将差异参数化,并使用“给定”和“然后”部分中的数据表给出前后值
或者(我的首选)

  • 使用“场景大纲”语法,该语法使用示例表提供数据装置集及其预期结果。这些将在场景步骤中替换为运行时。然后对示例表中的每一行“播放”一次场景
因此:

变成:

    Scenario Outline: Application Start and login
    Given Application started by <AuthenticationStatus> user
    And I have <SessionState> session
    When I start the application
    Then I see the <FirstScreen> screen

    Examples:
    |AuthenticationStatus   |SessionState   |FirstScreen|
    |Authenticated          |open           |home       |
    |Un-Authenticated       |not open       |login      |
场景大纲:应用程序启动和登录
由用户启动的给定应用程序
我有一个会议
当我启动应用程序时
然后我看到了屏幕
示例:
|身份验证状态|会话状态|第一屏|
|认证的|开放|家庭|
|未经身份验证|未打开|登录|

对于2个场景,它可能不值得失去可读性,但对于更多的场景,我认为它绝对值得

简而言之,不是,但这里有一些选项可以处理一个场景的多个变体:

  • 如果只是跟踪不同场景步骤的元素,您可以将早期步骤移动到公共“背景”部分,使重复的不同场景更短、更清晰
但从您的示例来看,所有步骤都略有不同,因此您可以:-

  • 接受多个场景的重复

  • 将差异参数化,并使用“给定”和“然后”部分中的数据表给出前后值
或者(我的首选)

  • 使用“场景大纲”语法,该语法使用示例表提供数据装置集及其预期结果。这些将在场景步骤中替换为运行时。然后对示例表中的每一行“播放”一次场景
因此:

变成:

    Scenario Outline: Application Start and login
    Given Application started by <AuthenticationStatus> user
    And I have <SessionState> session
    When I start the application
    Then I see the <FirstScreen> screen

    Examples:
    |AuthenticationStatus   |SessionState   |FirstScreen|
    |Authenticated          |open           |home       |
    |Un-Authenticated       |not open       |login      |
场景大纲:应用程序启动和登录
由用户启动的给定应用程序
我有一个会议
当我启动应用程序时
然后我看到了屏幕
示例:
|身份验证状态|会话状态|第一屏|
|认证的|开放|家庭|
|未经身份验证|未打开|登录|

对于2个场景,它可能不值得失去可读性,但对于更多的场景,我认为它绝对值得

请给问题一个恰当的描述性标题。正如你所说,
Else
不是小黄瓜关键词。因此,如果你的目标是编写有效的小黄瓜,那么“它正确吗?”的答案是否定的。但是,由于你没有使用小黄瓜工具来解析你的场景,你可以自由地为它们提供自己的词汇表。请给问题一个适当的描述性标题。正如你所说,
Else
不是小黄瓜关键字。因此,如果你的目标是编写有效的小黄瓜,那么“它正确吗?”的答案是否定的。但是,由于你没有使用小黄瓜工具来解析你的场景,你可以自由地为它们想出自己的词汇表。