Запуск и остановка chromedriver один раз за сеанс тестирования

У меня есть куча тестов селена, которые выполняются как часть сценариев specflow. В настоящее время я запускаю и останавливаю ChromeDriver один раз для каждой функции:

[Binding]
public class WebBrowser
{
    public static IWebDriver Current
    {
        get
        {
            if (!FeatureContext.Current.ContainsKey("browser"))
            {
                FeatureContext.Current["browser"] = new ChromeDriver();
            }
            return (IWebDriver)FeatureContext.Current["browser"];
        }
    }

    [BeforeFeature]
    public static void Close()
    {
        if (FeatureContext.Current.ContainsKey("browser"))
        {
            Current.Close();
            ((ChromeDriver) FeatureContext.Current["browser"]).Quit();
        }
    }
}

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

Есть ли способ настроить nunit для запуска некоторого кода в конце каждого запуска?

Если я удалю вызов chromedriver.Quit(), то:

  • Средство запуска тестов Resharper вечно вращается после запуска моих тестов, никогда не сообщая о завершении теста.
  • Средство запуска тестов NUnit работает нормально, но оставляет окно работающего драйвера после каждого запуска тестового сеанса.

Было бы здорово, если бы какой-то код создавал chromedriver до запуска первого теста и останавливал его после запуска последнего теста.

Обновление: изменено [BeforeScenario] на [BeforeFeature] - спасибо Ли за указание на это.


person Brownie    schedule 21.03.2012    source источник


Ответы (1)


Вы выходите из драйвера после того, как каждый сценарий не работает. Если вы изменили [AfterScenario] на [AfterFeature], вы получите некоторое увеличение производительности. Вы можете использовать [BeforeFeature] для настройки веб-драйвера.

person Lee Grindon    schedule 23.03.2012
comment
Спасибо, Ли, первоначальный вопрос все еще остается, но исправление этого значительно увеличило скорость. - person Brownie; 27.03.2012
comment
Это правильный ответ. вы должны выйти в [AfterFeature], как указывает этот ответ. - person Dave Rael; 27.03.2012