Запутался мой корнишон - навигация между веб-страницами - PullRequest
2 голосов
/ 24 января 2011

Я только начинаю с BDD в веб-проекте, использую SpecFlow и WatiN для автоматизации вещей через браузер, и я не совсем уверен, как написать свои шаги.

Я пытаюсьчтобы вывести все из тестов, и в стиле TDD, ничего не писать, если только это не необходимо для прохождения теста.(Я также делаю юнит-тесты, чтобы проработать детали, но этот вопрос не об этом).Одна вещь, которая меня смущает, это навигация между страницами, и если / как это должно быть определено в спецификациях.

Первый тест включает в себя ввод некоторых деталей и обеспечение их отображения в списке.Моя первая попытка выглядит примерно так:

Сценарий: Добавить подробности Опция 1

Учитывая, что я нахожусь на «Домашней странице»
Когда я нажимаю «Добавить детали»
И я вписываю «Джон Смит» в поле «Имя»
И я нажимаю «Сохранить»
Затем в списке появляется «Джон Смит»

Однако, это предполагает переход между паройстраниц, поэтому я не знаю, должно ли это быть явным - в противном случае, я просто должен предположить, что я на правильной странице, или шаги, которые явно не связаны с той страницей, на которой я нахожусь (например, «КогдаЯ нажимаю «Добавить детали». У меня есть утверждения, чтобы проверить, на какой странице я нахожусь.

Проверяем ли мы страницы с явными шагами в сценарии?

Сценарий: Добавить подробности, вариант 2

Учитывая, что я нахожусь на странице «Домой»
Когда я нажимаю «Добавить детали»
И я на странице «Добавить детали»
И я вхожу«Джон Смит» в поле «Имя»
И я нажимаю «Сохранить»
И я на странице «Домой»
Затем «Джо»hn 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
}

В качестве альтернативы, мы могли бы начать с

Учитывая, что я нахожусь на странице "Добавить детали"

И просто включите этот шаг, начиная с домашней страницы и нажав кнопку "Добавить детали", чтобы получитьна эту страницу.Несмотря на то, что после нажатия кнопки «Сохранить» все равно остается проблема возврата к домашней странице.

Есть мысли?

1 Ответ

3 голосов
/ 24 января 2011

Я бы сказал, что вам не нужно проверять это в этом сценарии.По сути, это тест Given-When-Then (range-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
...