Возможно ли настроить .Net Core+ + SpecFlow3 + NUnit. с паралельным запуском тестов?
https://specflow.org/documentation/Parallel-Execution/
Notes for NUnit v3 Support
The NUnit v3 unit test provider (nunit) does not currently generate [Parallelizable] attributes on feature classes or scenario methods. Parallelisation must be configured by setting an assembly-level attribute in the SpecFlow project.
[assembly: Parallelizable(ParallelScope.Fixtures)]
создаёте папку properties в каталоге проекта тестов
в нем файл assemblyinfo.cs
и в нем уже пишете что и как парализуется
рекомендую сразу гуглить thread static и как изолировать переменные, чтобы тесты не смотрели в данные других тестов
Да, это я нашел и работает. Возможно ли указать количество потоков самому? NUnit насколько я знаю стартует по умолчанию с максимальным количеством потоков = количеству ядер PC
Спасибо!
Нормально распараллелить SpecFlow у вас всё равно не получится, т.к. там работает параллелизация только по фикстурам.
Да, я так понял, можно запустить параллельно только по 1 тесту с каждой фичи. Если я выбираю тип ParallelScope.Children, то запускаются все, но проходят по 1 тесту с фичи, а остальные падают
я запускаю тесты нюнитом по тегам
соотвественно в 1 тег можно запихать тесты из разных фич
плюс можно несколько тегов пихать в запуск тестов
в общем, нюнит хорошо позволяет обойти ограничение на запуск тестов только из фичи
Может вы можете посоветовать, что использовать при таком стеке для репортинга? Allure?
Использую такой же стек, только более ранний, и использую Аллюр. Почти не надо настраивать и красивые отчеты.
Плюс аллюра в этом стеке, что вам не требуется дополнительно логировать шаги, если вы используете плагин аллюра для спекфлоу по умолчанию.
Ваши шаги в спекфлоу и будут шагами теста в отчете.
Так что думаю аллюр - оптимальный вариант.
Я использую SpecFlow 3, а как я понял алюр его пока не поддерживает? И я смотрю для SpecFlow.Allure нужен net framework, а не net core как в моем случае И что-то пока не понимаю, как вообще генериться репорт, надо дополнительно что-то запускать или указывать при запуске если тесты ранаются так: dotnet test … ?
Стандартно, когда вы запускаете тесты с установленным Спецфлоу.Аллуре нугетом, то по завершению теста у вас создается папка allure-results (может создаваться во временной директории), которая содержит .json файлы с результатами. Потом, используя Allure’s commandline-tools, которым вы подаете папку с результатами, вы генерируете отчет. От того, как вы запускаете тесты, зависит лишь то, где создается папка с результатами.
Создал allureConfig.json, обновил параметер чтобы копировался в папку, запускал несколько раз тесты, папки allure-reports все равно нету(
Поищите ее. Я ее нашел только через поиск в файловой системе.
Искал, нету нигде. Еще тесты ранаются через SauceLabs, может ли это как-то повлиять? Ну и как говорил, в зависимостях warning так как использую net core
на форуме уже есть тема про аллюр для спекфлоу
ваши действия такие:
- гуглите аллюр джсон для нюнита вроде
- кладете его в проект до того, как нугет пакет поставите
- в проперти файла ставите always copy
- потом добавляете нугет пакет
- прописываете его в свойствах солюшена
- аллюр конфиге пишете путь, где должен быть allure-results относительно того места, откуда будете запустить запускать тесты (если из корня репозитория, то относительно него)
- запускаете тесты из консоли и надеетесь, что получите результат
ну и погуглите вообще как аллюр работает
нугет пакет который вы поставили, он только парсит выполняемую фичу и формирует джсоны в каталог allure-results
вы самостоятельно должны генерировать репорт консольным аллюром
ну и доступ к аллюру вы имеете только через контекст теста с помощью allurecommons
Сделал все как написано, не генериться ничего. Еще заметил что в папке bin нету файла Allure.Commons.dll. Дополнительно для net core не нужно в конфиге проекта ничего для этого плагина указывать?