Всем привет. Я автоматизирую тестирование одного сайта при помощи Selenium + SpecFlow(xUnit). К огромному сожалению Test Explorer запускает тесты в непонятном мне порядке. Как можно настроить порядок запуска тестов? Не обычных юнит-тестов, а именно bdd-тестов на русском языке, т.к. мне нужен именно end-to-end. Я знаю, что это проблема test runner’a, который я использую. Можно ли как-то настроить порядок запуска в test runner’е? Или использовать другой test runner, который это позволяет.
А можете сказать зачем вам нужен порядок в запуске тестов? Это плохая практика делать тесты зависимы от порядка запуска.
Мои E2E тесты нужны для корректного заполнения анкеты клиента для кредитного договора. Для начала нужно войти в систему, далее заполнить анкету по 5 шагам и отправить ее. В моем случае я не могу сначала заполнить, а потом войти в систему. В этом и суть, что меня не должно пускать, пока я не введу свою данные об учётной записи пользователя, который будет заполнять анкету.
У меня E2E UI тесты. Не юниты, которые я согласен должны быть независимыми.
UI тесты тоже должны быть независимыми. Для этого можно использовать API, DB, чтобы генерить нужные данные до запуска теста.
И всё же, что вам мешает вход в систему вынести в отдельный метод и вызывать его в каждом тесте первой строкой, в тестах где это необходимо?
Выносить вход в систему отдельным тестом, да ещё делать его как precondition для другого - это адский ад!
А по теме, если у вас не параллельные запуски, то NUnit имеет атрибут [Order], который применяется как к классам, так и к методам, и отвечает он как раз-таки за порядок запуска тестов.
Я прекрасно это понимаю. На сайте есть визард, который ведёт пользователя по определённым группам полей, которые ему нужно заполнить. Я не могу просто взять и запустить сначала 4 стэп, а потом 1 из этого визарда. В этом и суть, что он должен быть последовательным. С NUnit’ом пробовал, через Test Explorer самой Visual Studio он запускает в рандомном(либо не понятным мне порядке).
Если есть какой-то визард состоящий из N количества шагов, и у вас как вы говорите E2E - то зачем разбивать это на разные тесты?
Ну да ладно, это ваше дело.
Вы что, собираетесь тесты запускать из VS что ли?
В таком случае вам надо смотреть на Ordered Test Set: Setting Up Your Test Run Sequence Using Ordered Tests | Microsoft Learn
Либо использовать Playlist
Окей, тогда какие варианты есть запуска? Кроме Visual Studio.
И да, у меня тесты BDD, написанные на русском языке с помощью SpecFlow. Таким Макаром нельзя настраивать Ordered Test List.
NUnit3-console, как вариант.
Да и к тому же, вы написали что вы пробовали NUnit.
Вы атрибут [Order] использовали? Он работает даже с Test Explorer.
Единственный нюанс, что любое изменение feature файла перегенерит тестовый класс, удалив оттуда все ручные изменения, и вам придётся постоянно туда писать руками [Order].
Да, я пробовал Order и он не помогает в порядке. Все равно запускаются в рандомном.
Покажите пример кода, пожалуйста, где Order не работает так, как вы ожидаете.
В этом и проблема, рассматриваю вариант просто перейти на другую платформу, либо JS, либо Java. Т.к. на проектах написанных на них с помощью оригинального Cucumber’a все отлично.
Сценарий
Реализация сценария
Помогло поставить order на feature-файл, а не просто на сценарий. Но! Это жуткий костыль.
Неужели никто не пишет обычные E2E тесты под .NET? У всех устоявшееся практика делать тесты максимально независимыми, но ведь здесь и теряется весь смысл Е2Е.
Может есть какие-то устоявшиеся практики как делать это правильно?
Подскажите языки, или технологии(кроме .NET) с помощью которых можно все таки выстроить процесс Е2Е.
Feature-файл является partial class, поэтому вы можете создать другую часть этого класса и поставить [Order] там, он не будет перезаписываться при изменении внутренностей feature-файла. Для таких целей partial и был введён, это не костыль.
Практика делать независимыми тестами - единственно верная.
В своих тестах, как вы будете запускать их параллельно? Правильно, никак.
Будет у вас хотя бы 100-200 тестов, тогда вы уже начнёте понимать, что последовательные запуски - это непозволительно долгий процесс.
E2E не подразумевает собой, что его надо разбивать на несколько тестов.
Что вам мешает сделать один тест, который проверяет какой-то E2E сценарий?
О каком E2e идет речь если твои тесты зависимые. Разберись с понятием E2E…
Такая же ситуация. Решил, ставя для сценариев такие имена как:
A_A, A_B, A_C, etc. Таким образом тесты запускаются в определенном порядке.
Причина почему нужен определенный порядок - флоу сайта, пока не сделаешь одни действия, не будут доступны следующие. Но планирую сделать скрипты для базы, чтобы перед частью тестов заполнялись данные, чтобы хоть частично избежать зависимости.