@ Ответ Нейла неверен. NUnit будет запускать тесты в сборке параллельно в соответствии с тем, как вы это укажете. Однако здесь вы имеете дело с двумя частями программного обеспечения, каждая из которых имеет свой способ распараллеливания. Я могу ответить WRT NUnit, чтобы вы, по крайней мере, не тратили время на ненужные игры с атрибутами.
[Parallelizable]
то же самое, что и `[Parallelizable (ParallelScope.Self)]. Лучший стиль, IMO, - использовать его без атрибута, но они равны.
[ParallelScope.All]
- это сокращение от [ParallelScope.Self | ParallelScope.Children]
.
Итак, вам нужно беспокоиться только о двух параметрах: Self (неявное или явное) и Children.
Размещение Children
в классе аналогично размещению Self
в каждый тестовый пример. В обоих случаях тесты могут выполняться параллельно друг другу.
При размещении в классе прибора Self
означает, что прибор может работать параллельно с другими приборами, которые также имеют Self
им. Если тесты в этом приспособлении также можно распараллеливать, то они выполняются параллельно со всеми тестами во всех параллельных приспособлениях.
Если бы вы запускали только NUnit, то есть без Selenium, вы бы просто поставьте [Parallelizable]
на каждый тест или '[Parallelizable (ParallelScope.Children)] `на приспособлении - любой из них сделает то же самое.
Если у вас более одного приспособления и вы не хотите, чтобы они работали параллельно, делать больше нечего. Если вы хотите, чтобы они и все их тесты выполнялись параллельно, поставьте [Parallelizable]
на приспособление ИЛИ поместите [Parallelizabel(ParallelScope.All)]
на приспособление и ничего не на тестовые случаи.
Что-то важное, что многие люди упускают: [Parallelizable]
заставляет ваши тесты запускаться параллельно. Это не делает их способными работать параллельно. Вы должны это сделать. Атрибут сообщает NUnit, что вы убедились, что тест может выполняться параллельно, поэтому он запускает его таким образом.
Вот и все, что касается NUnit. Теперь, если вы добавите селен в смесь, это зависит от того, как вы его используете. Если Selenium запускает для вас процессы, то, что вы делали в NUnit, не имеет никакого значения. Вам нужно понять, как распараллеливание Selenium взаимодействует с NUnit. Я просто рассказал вам о том, что делает NUnit.
Наблюдение ... если у вас не очень мало тестовых примеров или они не занимают много времени по отдельности, вы, вероятно, сможете получить такие же хорошие или более производительные приборы, работающие параллельно и позволяя тестам запускаться последовательно внутри прибора.
UPDATE - В вашем последующем комментарии вы сказали, что у вас есть только одно приспособление. Мой ответ был связан с гораздо более сложным предположением. С одним прибором, если вы хотите, чтобы все тесты выполнялись параллельно, используйте ParallelScope.Children на приспособлении. Если один или два теста не могут работать параллельно, пометьте их как NonParallelizable.