Мы используем TestNG и Selenium WebDriver для протестируйте наше веб-приложение.
Теперь наша проблема в том, что у нас часто есть несколько тестов, которые необходимо запускать в определенном порядке, например:
Очевидно, что эти тесты должны выполняться именно в таком порядке.
В то же время у нас есть много других тестов, которые полностью независимы от списка тестов выше.
Итак, мы хотели бы иметь возможность каким-то образом объединять тесты в «группы» (не обязательно группы в смысле TestNG), а затем запускать их так, чтобы:
Второй момент важен, потому что мы хотим избежать зависимостей между тестами в разных группах (чтобы можно было использовать разные тестовые «группы» и развивались самостоятельно).
Есть ли способ добиться этого с помощью TestNG?
Решения, которые мы опробовали
dependsOnMethods
, чтобы заставить их работать в правильный порядок. Раньше это работало в TestNG V5, но в V6 TestNG иногда чередует тесты из разных классов (при соблюдении порядка, установленного supportsOnMethods
).Кажется, нет способа сказать TestNG «Всегда запускать тесты из одного класса вместе». supportsOnMethods
, не могут быть заказаны перехватчиком, поэтому нам придется прекратить его использование. Вероятно, нам придется создать нашу собственную аннотацию, чтобы указать порядок, и мы хотели бы использовать стандартные функции TestNG, насколько это возможно. preserve-order
для упорядочивания тестов. Это выглядит многообещающе, но работает только в том случае, если вы перечисляете каждый метод тестирования отдельно, что кажется избыточным и сложным в обслуживании. Есть ли лучший способ добиться этого?
Я также открыт для любых других предложений о том, как обрабатывать тесты, которые основаны друг на друге, без необходимости налагать полный порядок на все тесты .
PS
Ответ Аланнинга указывает на то, что мы могли бы просто сохранить независимость всех тестов, выполнив необходимую настройку внутри каждого теста. В принципе, это хорошая идея (и некоторые тесты это делают), однако иногда нам нужно протестировать полный рабочий процесс, причем каждый шаг зависит от всех предыдущих шагов (как в моем примере). Сделать это с «независимыми» тестами означало бы запускать одну и ту же многоступенчатую настройку снова и снова, и это сделало бы наши и без того медленные тесты еще медленнее.Вместо выполнения трех тестов:
, мы получим
Помимо ненужного увеличения времени тестирования, это также кажется неестественным - должна быть возможность моделировать рабочий процесс как серию тестов.
Если нет другого пути, вероятно, мы сделаем это именно так, но мы ищем лучшее решение, не повторяя одни и те же вызовы настройки.