首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >黄瓜场景-正确的场景

黄瓜场景-正确的场景
EN

Stack Overflow用户
提问于 2019-07-11 11:50:07
回答 1查看 229关注 0票数 0

我正在努力改进我的黄瓜场景(BDD)。

让我们说,我们有网站,可以在3种状态,并基于这个状态,它有不同的网页元素在页面上。

您将如何编写黄瓜场景,使其接近BDD方法,使其易于理解?

目前我有:

代码语言:javascript
复制
  Scenario Outline: View page in <PAGE STATE> state
    Given I opened page in <PAGE STATE> state
    Then I should see "<AVAILABLE ELEMENTS>
    Examples:
      | PAGE STATE | AVAILABLE ELEMENTS                                         |
      | State1     | Value input, Default slider, Active slider,                |
      | State2     | Value input, Default slider, Active slider, Type dropdown  |
      | State3     | Value input, Default slider, Active slider, Image uploader |
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-11 15:39:29

我不会为所有的页面状态推荐一个场景大纲。您希望每个场景都集中在您所断言的内容上。例如,图像上传程序应该是它自己的场景:

代码语言:javascript
复制
Scenario: Users can upload an image when things are foobarred
    # One or more `Given` steps to put the system into the correct state
    Given a foo exists
    And bar has happened
    And a baz has been foobarred
    When I am viewing the page
    Then I should be able to upload an image

并通过一个示例步骤进行断言:

代码语言:javascript
复制
[Then(@"I (should|should not) be able to upload an image")]
public void ThenIShouldBeAbleToUploadAnImage(string assertion)
{
    bool isFound = false;

    try
    {
        var element = driver.FindElement(By.Css("input[type='file']"));

        isFound = true;
    }
    catch (NoSuchElementException)
    {
        // do nothing
    }
    catch (WebDriverTimeoutException)
    {
        // do nothing
    }

    if (assertion == "should")
    {
        // Assert isFound is true
    }
    else
    {
        // Assert isFound is false
    }
}

场景名称清楚地说明了一个狭窄的测试用例。在此场景的Given步骤中清楚地定义了页面的每个状态。它也只有一个断言,因此只有一个原因,这个场景应该失败(图像上传字段不存在)。

您希望您的场景集中在单个行为上。您的步骤不应该描述页面或屏幕的技术细节,而应该描述用户正在做什么。您不应该断言上传字段是可见的。您应该断言您能够上传图像,并让步骤定义负责查找图像上载字段。

有关如何编写描述行为的良好步骤的更多建议,请参见BDD 101:写好的Gherkin,而不是一步一步地完成任务。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56988515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档