Сценарий огурца - правильный сценарий - PullRequest
0 голосов
/ 11 июля 2019

Я пытаюсь улучшить свои сценарии огурцов (BDD)

Допустим, у нас есть веб-сайт, который может находиться в 3 состояниях, и в зависимости от этого состояния он имеет различные веб-элементы на странице.

Как бы вы написали сценарий с огурцом, чтобы он был максимально приближен к методологиям BDD и был прост для понимания?

В настоящее время у меня есть:

  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 |

1 Ответ

2 голосов
/ 11 июля 2019

Я бы не рекомендовал наброски сценария для всех состояний страницы. Вы хотите, чтобы каждый сценарий был сосредоточен на том, что вы утверждаете. Например, загрузчик изображений должен иметь свой собственный сценарий:

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

И пример шага, делающего утверждение:

[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: Написание хорошего корнишона для получения дополнительных советов о том, как написать хорошие шаги, описывающие поведение, а не пошаговый процесс для выполнения задачи.

...