2012-03-21 67 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