Повторное использование сценариев на нескольких страницах

Я новичок в Specflow и мне нужен способ повторного использования сценариев в нескольких файлах функций.

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

Help | Feedback | FAQ

У меня есть сценарий для проверки функциональности ссылки «Справка»:

Scenario: Help link
    Given I am on page1
    When  I click on the link containing text "Help"
    Then  I see the help popup

Поскольку оператор «Given» указывает, какую страницу открывать, сценарий привязан к этой странице. Чтобы протестировать ту же функциональность ссылок справки на page2, page3, page4 и т. Д., Мне нужно:

1) Скопируйте сценарий в другой файл функции

2) Измените данное утверждение, чтобы указать правильную страницу.

3) Повторите эти действия для всех страниц, содержащих справочную ссылку!

Это похоже на очень много дублирования, и должен быть лучший способ сделать это.


person David Talbot    schedule 13.01.2015    source источник


Ответы (2)


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

Scenario Outline: Help link
    Given I am on <Page>
    When I click on the link containing text "Help"
    Then I see the help popup

Examples:
    | Page       |
    | Home       |
    | Contact Us |
    | About Us   |
person Greg Burghardt    schedule 13.01.2015
comment
Спасибо, Грег, это полезно, но это будет означать, что мне нужно будет скопировать блок примеров под каждый из моих общих сценариев. Думаю, что мне нужно, так это наброски фона, как предложил этот человек stackoverflow.com/questions/13141894/ - person David Talbot; 13.01.2015
comment
Итак, вы хотите запустить функцию целиком на нескольких страницах? - person Greg Burghardt; 13.01.2015
comment
Да, для всех общих элементов. Я мог бы иметь отдельные файлы функций для верхнего / нижнего колонтитула / навигации и т. Д. которые являются общими для нескольких страниц. Зачем копировать и вставлять для каждой страницы? - person David Talbot; 13.01.2015
comment
Я понимаю что ты имеешь ввиду. В Cucumber / SpecFlow есть дыра для этих сквозных проблем, связанных с тестированием. Хотя, честно говоря, я не вижу смысла тестировать ссылку справки на нескольких страницах, если эта ссылка справки не является контекстной. - person Greg Burghardt; 14.01.2015
comment
В приложении, над которым я работаю, общие элементы могут быть настроены для каждой страницы, чтобы они имели разный внешний вид. Возможно, на одной странице может быть ссылка справки, а на другой - ссылка СПРАВКА. Мне нужно проверить, что конфигурация была сделана правильно. Но если копирование / вставка - единственный способ, мне придется просто сделать это. - person David Talbot; 14.01.2015
comment
BoroDrummer Если бы я был на вашем месте, я бы сделал файл функции для тестирования ссылки справки и поместил бы в него эту схему сценария. Файлы функций необязательно группировать по веб-страницам. Если имеет смысл сгруппировать сценарии по функциональности, дерзайте! Также ради сокращения времени выполнения теста не прочь провести тест, который проверяет, что страница справки находится в правильном месте, а затем провести еще один тест, который проверяет, что все ссылки справки указывают на правильный href. Если есть много страниц, на которых вы проверяете ссылку, вы можете сэкономить много времени, не открывая страницу снова и снова. - person alannichols; 14.01.2015
comment
@alannichols, мне нравится ваше мышление, но, к сожалению, не все так просто. В этом случае ссылка справки создает оверлейное окно, в которое динамически вставляется HTML-код с помощью javascript. Я согласен минимизировать загрузку страницы. - person David Talbot; 14.01.2015
comment
@BoroDrummer А, значит, вам придется утверждать что-то свое для каждой страницы? - person alannichols; 16.01.2015

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

  1. Написание тестов
  2. Запуск тестов

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

Feature: Footer checks

Scenario: Footer appears on pages
  Given a selection of pages
  When each page is visited
  Then each page should have the footer

и пусть ваш выбор страниц будет небольшой случайной выборкой со всех страниц.

person diabolist    schedule 23.01.2015