TestNG и Selenium: Разделите тесты на «группы», выполняйте в каждой группе в порядке

Мы используем TestNG и Selenium WebDriver для протестируйте наше веб-приложение.

Теперь наша проблема в том, что у нас часто есть несколько тестов, которые необходимо запускать в определенном порядке, например:

  • войти в приложение
  • ввести некоторые данные
  • отредактировать данные
  • проверить правильность отображения

Очевидно, что эти тесты должны выполняться именно в таком порядке.

В то же время у нас есть много других тестов, которые полностью независимы от списка тестов выше.

Итак, мы хотели бы иметь возможность каким-то образом объединять тесты в «группы» (не обязательно группы в смысле TestNG), а затем запускать их так, чтобы:

  • тесты внутри одной «группы» всегда выполнялись вместе и в в том же порядке
  • , но разные тестовые «группы» в целом могут выполняться в любом порядке

Второй момент важен, потому что мы хотим избежать зависимостей между тестами в разных группах (чтобы можно было использовать разные тестовые «группы» и развивались самостоятельно).

Есть ли способ добиться этого с помощью TestNG?

Решения, которые мы опробовали

  • Сначала мы просто поместили тесты, которые принадлежат вместе, в один класс и использовали dependsOnMethods , чтобы заставить их работать в правильный порядок. Раньше это работало в TestNG V5, но в V6 TestNG иногда чередует тесты из разных классов (при соблюдении порядка, установленного supportsOnMethods ).Кажется, нет способа сказать TestNG «Всегда запускать тесты из одного класса вместе».
  • Мы думали написать перехватчик метода . Однако у этого есть недостаток, заключающийся в том, что выполнение тестов изнутри IDE становится более трудным (поскольку прямой вызов теста в классе не будет использовать перехватчик). Кроме того, тесты, использующие supportsOnMethods , не могут быть заказаны перехватчиком, поэтому нам придется прекратить его использование. Вероятно, нам придется создать нашу собственную аннотацию, чтобы указать порядок, и мы хотели бы использовать стандартные функции TestNG, насколько это возможно.
  • В документации TestNG предлагается использовать preserve-order для упорядочивания тестов. Это выглядит многообещающе, но работает только в том случае, если вы перечисляете каждый метод тестирования отдельно, что кажется избыточным и сложным в обслуживании.

Есть ли лучший способ добиться этого?

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

PS

Ответ Аланнинга указывает на то, что мы могли бы просто сохранить независимость всех тестов, выполнив необходимую настройку внутри каждого теста. В принципе, это хорошая идея (и некоторые тесты это делают), однако иногда нам нужно протестировать полный рабочий процесс, причем каждый шаг зависит от всех предыдущих шагов (как в моем примере). Сделать это с «независимыми» тестами означало бы запускать одну и ту же многоступенчатую настройку снова и снова, и это сделало бы наши и без того медленные тесты еще медленнее.Вместо выполнения трех тестов:

  • Тест 1: вход в приложение
  • Тест 2: введите некоторые данные
  • Тест 3: отредактируйте данные

, мы получим

  • Тест 1: вход в приложение
  • Тест 2: войдите в приложение, введите данные
  • Тест 3: войдите в приложение, введите данные, отредактируйте данные и т. Д.

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

Если нет другого пути, вероятно, мы сделаем это именно так, но мы ищем лучшее решение, не повторяя одни и те же вызовы настройки.

6
задан sleske 2 November 2011 в 15:21
поделиться