t.me/atinfo_chat Telegram группа по автоматизации тестирования

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

specflow
nunit
execution
parallel
.net
allure
Теги: #<Tag:0x00007f9c4c9b71a8> #<Tag:0x00007f9c4c9b7068> #<Tag:0x00007f9c4c9b6f00> #<Tag:0x00007f9c4c9b6d48> #<Tag:0x00007f9c4c9b6be0> #<Tag:0x00007f9c4c9b6a78>

(Алексей Потоцкий) #1

Возможно ли настроить .Net Core+ + SpecFlow3 + NUnit. с паралельным запуском тестов?


(Alexandr D.) #2
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)]

(Vladislav Abramov) #3

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


(Алексей Потоцкий) #4

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


(Vladislav Abramov) #5


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


(Alexandr D.) #6

Нормально распараллелить SpecFlow у вас всё равно не получится, т.к. там работает параллелизация только по фикстурам.


(Алексей Потоцкий) #7

Да, я так понял, можно запустить параллельно только по 1 тесту с каждой фичи. Если я выбираю тип ParallelScope.Children, то запускаются все, но проходят по 1 тесту с фичи, а остальные падают


(Vladislav Abramov) #8

я запускаю тесты нюнитом по тегам
соотвественно в 1 тег можно запихать тесты из разных фич


(Vladislav Abramov) #9

плюс можно несколько тегов пихать в запуск тестов

в общем, нюнит хорошо позволяет обойти ограничение на запуск тестов только из фичи


(Алексей Потоцкий) #11

Может вы можете посоветовать, что использовать при таком стеке для репортинга? Allure?


(Valentin G ) #12

Использую такой же стек, только более ранний, и использую Аллюр. Почти не надо настраивать и красивые отчеты.


(Alexandr D.) #13

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


(Алексей Потоцкий) #14

Я использую SpecFlow 3, а как я понял алюр его пока не поддерживает? И я смотрю для SpecFlow.Allure нужен net framework, а не net core как в моем случае И что-то пока не понимаю, как вообще генериться репорт, надо дополнительно что-то запускать или указывать при запуске если тесты ранаются так: dotnet test … ?


(Valentin G ) #15

Стандартно, когда вы запускаете тесты с установленным Спецфлоу.Аллуре нугетом, то по завершению теста у вас создается папка allure-results (может создаваться во временной директории), которая содержит .json файлы с результатами. Потом, используя Allure’s commandline-tools, которым вы подаете папку с результатами, вы генерируете отчет. От того, как вы запускаете тесты, зависит лишь то, где создается папка с результатами.


(Алексей Потоцкий) #16

Создал allureConfig.json, обновил параметер чтобы копировался в папку, запускал несколько раз тесты, папки allure-reports все равно нету(


(Valentin G ) #17

Поищите ее. Я ее нашел только через поиск в файловой системе.


(Алексей Потоцкий) #18

Искал, нету нигде. Еще тесты ранаются через SauceLabs, может ли это как-то повлиять? Ну и как говорил, в зависимостях warning так как использую net core


(Vladislav Abramov) #19

на форуме уже есть тема про аллюр для спекфлоу

ваши действия такие:

  • гуглите аллюр джсон для нюнита вроде
  • кладете его в проект до того, как нугет пакет поставите
  • в проперти файла ставите always copy
  • потом добавляете нугет пакет
  • прописываете его в свойствах солюшена
  • аллюр конфиге пишете путь, где должен быть allure-results относительно того места, откуда будете запустить запускать тесты (если из корня репозитория, то относительно него)
  • запускаете тесты из консоли и надеетесь, что получите результат

(Vladislav Abramov) #20

ну и погуглите вообще как аллюр работает

нугет пакет который вы поставили, он только парсит выполняемую фичу и формирует джсоны в каталог allure-results

вы самостоятельно должны генерировать репорт консольным аллюром

ну и доступ к аллюру вы имеете только через контекст теста с помощью allurecommons


(Алексей Потоцкий) #21

Сделал все как написано, не генериться ничего. Еще заметил что в папке bin нету файла Allure.Commons.dll. Дополнительно для net core не нужно в конфиге проекта ничего для этого плагина указывать?