Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Запуск нескольких WebDriver паралельно C#


(Oleg Zarevych) #1

Есть задача - запустить выполнение тестов в нескольких браузерах паралельно. К примеру ФФ и хром. Думаю использовать многопоточность, есть какие нибудь другие предложения ?
Вопрос по многопоточности - где создавать потоки ??
технологии WebDriver + C# + Nunit


(Alex Galchenko) #2

Если Вы используете NUnit 3 версии, то там многопоточность поддерживается из коробкина офф сайте есть все доки, но выбор браузера в этом случае будет реализован Вами. Что-то типа:
[TastCase("Firefox")] [TastCase("Firefox")] public void test() {...}


(Дмитрий Жарий) #3

Я рекомкндую запускать отдельные процессы, передавая браузер через конфигурационный файл либо через переменную окружения.

По возможности, тестовый код должен быть однопоточным, потому в многопоточный код:

  • Сложно горизонтально масштабировать: вы не можете запустить 2 потока одного процесса на отдельных машинах, зато можете запустить 2 процесса на отдельных машинах
  • Сложно дебажить: если вы поставите брейкпоинт внутри теста или метода… то нужно будет затратить дополнительное время чтобы определить в каком потоке вы сейчас находитесь
  • Нельзя использовать static переменные и синглтоны. Это если вы хотите сохранить, например, текущий браузер в статической переменной, чтобы не пересоздавать его при каждом тесте. Аттрибут ThreadStatic может не помочь, если NUnit будет создавать новый поток для каждого теста.
  • Неопределенный результат тестового прохода: допустим у вас все тесты в FF прошли успешно, а в Chrome 2 завалилось, каков будет результат в тестовом отчете?

Возможность многопоточного прогона была создана для Unit тестов, не для end2end / user acceptance