如何编写此 BDD 脚本?

How do I write this BDD script?

我的应用程序中有一个退出按钮,我想为其编写一个故事。它的行为是这样的:

  1. 如果我在编辑的表格中填写了内容,然后单击退出按钮,它会弹出一条确认消息,让我知道还有未保存的内容,如果我确定要退出页。
  2. 如果我正在编辑的表单中没有填写任何内容,然后单击退出按钮,确认消息将不会出现,我会立即退出表单。

到目前为止我所拥有的是这样的:

Given as a User on New Profile page
And I fill in the customer name = "Bob"
When I click on the Exit button
And I click on the "Ok" in the confirmation dialog
Then I will be redirected to the landing page.

我的问题是 And when I fill in the customer name = "Bob" 上的部分只涉及其中一个领域。我如何以简洁的方式编写故事,如果填写或选择了任何字段(下拉菜单),就会显示确认对话框?其次,我的故事是否正确?

您可以在该特定步骤中使用数据表,如下所示

Given as a User on New Profile page
And I fill in the customer details
|name|address1|adress2|pincode| //can be accessed with DataTable datatype in SD*
When I click on the Exit button
And I click on the "Ok" in the confirmation dialog
Then I will be redirected to the landing page.

*SD 步骤定义

您可以结合使用场景大纲和参数化用虚拟值填充字段的步骤。

Scenario Outline: The user is taken to the landing page after exiting new user profile
    Given I am registering as a new user
    And I have filled in the "<Profile Field>" field
    And I have chosen to exit the current page
    When I confirm I want to abandon my unsaved changes
    Then I should be redirected to the landing page

Examples:
    | Profile Field |
    | Name          |
    | Phone Number  |
    | ...           |

你没有 post 场景标题,这与每个步骤的措辞一样重要,所以我补上了。重要的是关注行为:

Scenario Outline: The user is taken to the landing page after exiting new user profile

步骤 Given I am registering as a new user 应导航到新的用户个人资料页面。

步骤 Given I have filled in the "<Profile Field>" field 应该接受一个参数,您可以在其中命名要填写的字段。此步骤的定义应该使用虚拟信息填写字段,或者盲目地在下拉列表中选择一个选项。

步骤Given I have chosen to exit the current page应该点击退出按钮。请注意,没有提及 "clicking" 任何内容。您应该避免在步骤中使用听起来像是关于如何使用用户界面的说明的语言,而是使用业务术语关注应用程序的行为。

When I confirm I want to abandon my unsaved changes 也是如此。它没有提到点击任何东西。它只关注行为(选择放弃您的更改)。步骤定义应该知道如何单击确认对话框中的 "OK" 按钮。确认对话框甚至存在的事实应该只有步骤定义才能知道。

最后,Then I should be redirected to the landing page 对用户最终到达的位置做出断言。我喜欢在我的 Then 步骤中包含 "should" 这个词。如果发现 Then 步骤失败时更容易查明测试失败。在我的步骤中 "should" 之后出现的条件通常是失败的。