.Net Core + SpecFlow3 + NUnit. Паралельный запуск тестов

Возможно ли настроить .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)]
1 лайк

создаёте папку properties в каталоге проекта тестов
в нем файл assemblyinfo.cs
и в нем уже пишете что и как парализуется
рекомендую сразу гуглить thread static и как изолировать переменные, чтобы тесты не смотрели в данные других тестов

Да, это я нашел и работает. Возможно ли указать количество потоков самому? NUnit насколько я знаю стартует по умолчанию с максимальным количеством потоков = количеству ядер PC
Спасибо!


вот количество потоков

2 лайка

Нормально распараллелить 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 не нужно в конфиге проекта ничего для этого плагина указывать?