2012-03-21 79 views
2

我有一堆硒测试作为specflow场景的一部分运行。我现在开始,每个功能停止ChromeDriver一次:每个测试环节启动和停止一次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] - 感谢李的指出。

回答

3

在每个方案没有功能后,您正在退出驱动程序。如果您将[AfterScenario]更改为[AfterFeature],您将获得一些性能提升。您可以使用[BeforeFeature]设置您的网络驱动程序。

+0

谢谢李,原来的问题仍然存在,但解决这个问题确实提高了速度。 – Brownie 2012-03-26 22:53:30

+0

这是正确的答案。你应该在[AfterFeature]中退出,正如这个答案指出的那样。 – 2012-03-27 12:56:26