【问题标题】:Confused about my Gherkin - navigation between web pages对我的 Gherkin 感到困惑 - 网页之间的导航
【发布时间】:2011-01-24 09:48:53
【问题描述】:

我刚开始在一个 Web 项目中使用 BDD,使用 SpecFlow 和 WatiN 通过浏览器自动执行操作,我不太确定如何编写我的步骤。

我正在尝试以 TDD 方式驱动测试中的所有内容,除非需要通过测试,否则不要编写任何内容。 (我也在做单元测试来驱动细节,但这个问题与此无关)。我感到困惑的一件事是页面之间的导航,以及是否/如何在规范中定义。

第一个测试涉及输入一些详细信息并确保它们显示在列表中。我的第一次尝试是这样的:

场景:添加详细信息选项 1

鉴于我在“主页”页面上
当我单击“添加详细信息”
我在名称字段中输入“John Smith”
然后我点击“保存”
然后“John Smith”出现在列表中

但是,这涉及在几个页面之间导航,所以我不知道这是否需要明确 - 否则,我只需要假设我在正确的页面上,或者显然与哪个页面无关的步骤我所在的页面(例如,“当我单击添加详细信息时”)有断言来检查我所在的页面。

我们是否检查场景中具有明确步骤的页面?

场景:添加详细信息选项 2

鉴于我在“主页”页面上
当我点击“添加详细信息”时
我在“添加详细信息”页面上
我在名称字段中输入“John Smith”
然后我点击“保存”
我在“主页”页面上
然后“John Smith”出现在列表中

或者我们是否按照选项 1 的步骤进行操作,只是没有明确提及?

例如,是否应该点击“添加详细信息”来检查我们是否最终进入了正确的页面?

public void WhenIClickAddDetils{
    // syntax probably wrong, not important
    Assert.That(IE.Button("AddDetails").exists);
    IE.Button("AddDetails").click();

    Assert.That(IE.PageTitle = "Add Details")); // do we check this here?
}

或者我们应该在输入详细信息之前检查我们是否在正确的页面上?

public void WhenIEnterDetils{
    Assert.That(IE.PageTitle = "Add Details")); // do we check this here?

    IE.TextField("Name").value = "John Smith";
    // etc
}

或者,我们可以从

鉴于我在“添加详细信息”页面上

只需让该步骤包括从主页开始并单击“添加详细信息”按钮即可进入该页面。尽管在我们点击“保存”后导航回到主页仍然存在同样的问题。

有什么想法吗?

【问题讨论】:

    标签: bdd specflow gherkin


    【解决方案1】:

    我会说你不必在这种情况下检查它。基本上,测试是Given-When-Then (arrange-act-assert),而And I am on the "Add Details" page 实际上是Then (assert) 在When (act) 中,这在我看来并不正确。

    我的直觉是它应该看起来像这样:

    Scenario: Add Details directs to "Add Details" page
    
    Given I am on the "Home" page
    When I click "Add Details"
    Then I am on "Add Details" page
    
    
    Scenario: "Add Details" adds person to the list
    
    Given I am on the "Add Details" page
    And I enter "John Smith" in the Name field
    And I click "Save"
    Then I am on the "Home" page
    And "John Smith" appears in the list
    

    【讨论】:

    • 是的,我确实考虑过,我只是觉得第一个场景太细了。我不确定是否要添加仅用于在页面之间导航的场景。但它确实比我的例子更好,所以也许你是对的。
    猜你喜欢
    • 1970-01-01
    • 2012-11-14
    • 2021-09-05
    • 2016-11-16
    • 2016-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-20
    相关资源
    最近更新 更多