2015-06-04 2 views
1

Итак, у меня есть разумное количество тестов на селен. Я хочу, чтобы они бежали тихо в фоновом режиме с помощью пакетного сценария, nunit-console и RemoteWebDriver. У меня уже есть эта настройка. Я также хочу иметь возможность запускать те же тесты (со мной, смотреть, отлаживать, писать новые тесты и т. Д.) С другими драйверами в visual studio 2013, используя nunit. У меня уже есть эта настройка. Проблема в том, что я хочу иметь возможность запускать их одновременно.Есть ли способ проверить, проходит ли тест селена через nunit или nunit-console?

Я подумываю о том, чтобы проверить, является ли вызывающая программа nunit vs nunit-console, чтобы определить, какой драйвер использовать, но я немного не знаю, как мне это настроить.

Я рассмотрел:

bool isConsole = Process.GetProcessesByName("nunit-console") 
       .FirstOrDefault(p => p.MainModule.FileName.StartsWith(@"C:\Program Files (x86)\NUnit 2.6.4\bin")) != default(Process); 

if (isConsole) 
{ 
    // remote 
} 
else 
{ 
    // ff,chrome,etc... 
} 

Это, однако, не позволило бы мне запустить набор в фоновом режиме во время работы отдельных тестов в визуальных студиях.

ответ

1

Я не уверен, если есть какая-то разница, когда вы запускаете тест селена, но с нормальным тестом NUnit вы могли бы сделать:

if("nunit" == Process.GetCurrentProcess().ProcessName)) { 
    ... 
} 

Это получает ваше имя процесса, который фактически выполняет тесты, а не просто проверка того, выполняется ли в данный момент процесс на машине.

Запуск из визуальной студии, я получаю имя процесса «vstest.executionengine.x86», с консоли я получаю «nunit-console», а из gui я получаю «nunit».

Возможно, что в зависимости от модели процесса, в которой выполняются ваши тесты, вам может потребоваться проверить родительский процесс, а не текущий процесс. С помощью Nunit, настроенного для запуска тестов в отдельном процессе, имя процесса с указанным выше кодом является «nunit-agent». По какой-то причине я не могу запустить nunit-console для запуска в этом режиме в настоящий момент, поэтому я не знаю, есть ли у него другое имя процесса, которое вы можете использовать вместо этого.

Если вам нужно проследить стек вызовов процессов, чтобы узнать, что такое родительский процесс, есть несколько отличных ответов на вопрос о том, как это сделать на this question.

+0

Это именно то, что я надеялся сделать. Спасибо! –