2013-10-28 5 views
3

Так что в моем приложении у меня есть сетка со списком всех пользователей, зарегистрированных на сайте. Теперь я хотел бы протестировать его, используя specflow и WatiN.Specflow - правильный способ проверки данных сетки

я придумал следующий сценарий:

Scenario: List of users 
    Given I am logged in as "Admin" user 
    And There exists following users 
     | Username | First name | Last Name | Registration date | 
     | alice | Alice  | LAlice | 2013-10-28  | 
     | bob  | Bob  | LBob  | 2013-10-27  | 
    When I go to all users page 
    Then There should be following users in table 
     | Username | First name | Last Name | Registration date | 
     | alice | Alice  | LAlice | 2013-10-28  | 
     | bob  | Bob  | LBob  | 2013-10-27  | 

Проблема заключается в том, что эта таблица не дублируется шагов, и я не уверен, что это правильный путь. Есть ли лучший способ проверить, загружены ли данные в сетку?

ответ

1

Чтобы проверить, что я правильно понял проблему, вы обеспокоены тем, что вы повторили определение таблицы в шагах «Дано» и «Затем» одного сценария (т. Е. Вы не используете 100 аналогичных сценариев, для которых требуется один и тот же набор таблиц вверх).

Похоже, что у вас все хорошо.

Рассмотрите, что произойдет, если пользовательский интерфейс потребует небольшого количества преобразований данных. , например.

Given I am logged in as "Admin" user 
And There exists following users 
    | Username | First name | Last Name | Registration date | 
    | alice | Alice  | Wonderland| 2013-10-28  | 
    | bob  | Bobby  | Tables | 2013-10-27  | 
When I go to all users page 
Then There should be following users in table 
    | Username | Full Name  | Registration date | 
    | alice | Alice Wonderland | 2013-10-28  | 
    | bob  | Bobby Tables  | 2013-10-27  | 

Этот сценарий ясен, и вы не можете сохранить здесь какое-либо место.

Повторяя таблицу точно так же, как вы это сделали, вы четко указываете в своей тестовой/живой документации, что то, что вы видите на странице, должно точно соответствовать представлению данных в памяти. Это стоит выразить в тесте.

Других вариантов, которые могли бы сэкономить место:

Given I am logged in as "Admin" user 
And there exists the following users 
    | Username | First name | Last Name | Registration date | 
    | alice | Alice  | LAlice | 2013-10-28  | 
    | bob  | Bob  | LBob  | 2013-10-27  | 
When I go to all users page 
Then I should be able to see all the users 

Это не очень понятно, и требует Наладку Затем шаг к или акции с заданным шагом, или на самом деле запрос фиктивного контекст данных самого (очень плохой план, потому что тест может пройти по неправильной причине).

Если вы спрашиваете, есть ли что-то ключевое слово C++ для C++ для создания многострочной строки строки const, то, насколько мне известно, и если бы это было так, вы не должны использовать его по причинам ясность выше.

В заключение - Мне нравится ваш тест именно так, как есть. :)

---- редактировать ---- Запоздалая мысль:

Тесты должны терпеть неудачу именно по одной причине. Возможно, ваш тест проверяет «данные таблицы точно соответствуют».

Но иногда вы просто хотите проверить что-то более простое. Например.

Then user 'alice' should appear in the users table 
4

Вы могли бы подойти к этому тесту по-другому, хотя в то время как следующий подход устранит дублирование данных из вашего сценария, это не обязательно более эффективное, как тест будет проверять каждый пользователь индивидуально.

Что вы можете сделать, это переписать тест, чтобы использовать функцию Spec12Scenario Outline. Тогда, если вы должны были переписать сценарий следующим образом, вы бы только один раз определить пользовательские данные:

Scenario Outline: List of users 
Given I am logged in as "Admin" user 
And There exists <Username> with <First name> <Last Name> and <Registration date> 
When I go to all users page 
Then There should be <Username> with <First name> <Last Name> and <Registration date> 

    examples: 
    | Username | First name | Last Name | Registration date | 
    | alice | Alice  | LAlice | 2013-10-28  | 
    | bob  | Bob  | LBob  | 2013-10-27  | 
+0

+1 Это очень полезный альтернативный способ смотреть на этот тест.Как вы говорите, это полезно для тестирования немного другого аспекта: т. Е. «Могу ли я отображать на своей странице каждую из следующих строк данных» - очень хорошо, если вас беспокоят такие вещи, как форматирование Unicode или html/javascript. Если тест будет проверять такие вещи, как целостность по всему набору данных или автосортировке и т. Д., Тогда это будет не так уместно. – perfectionist

+0

@perfectionist да, вы правы и рады, что вы оцениваете ответ. Мой ответ показывает, как удалить дублирование данных из ваших файлов функций, но, как вы говорите, вы теряете возможность проверить, что все записи присутствуют на экране во время дам. –