2016-08-12 107 views
0

我需要一個很好的做法來處理我的問題。如何在運行自動化測試之前配置環境?

問題是:我需要對站點運行自動測試。該網站有不同的配置,完全改變了它的設計(在一些頁面上)。例如,我可以配置2個不同的登錄頁面。我需要對它們進行測試。

首先我必須確保正確的測試是針對正確的配置運行的。所以在每次測試之前,我需要更改網站的配置。如果我有一千次測試是不好的。

因此我想到的一個解決方案是每次都不重新配置站點,而是隻做一次,並運行與此配置對應的所有測試。但是這個解決方案在我看來並不容易。

現在我所做的是:我創建了一個方法,在所有其他測試之前運行一次,在此方法中,我配置站點以在大多數測試中使用配置。所有其他測試現在在執行之前更改配置,並在執行之後將其更改回來。這根本不好。

要做到這一點我用NUnit3 SetUpFixture和OneTimeSetUp屬性:

/// <summary> 
    /// Runs once before all the test in order to config the environment 
    /// </summary> 
    [SetUpFixture] 
    public class ConfigTests 
    { 
     [OneTimeSetUp] 
     public void RunBeforeAnyTests() 
     { 
      IWebDriver driver = new ChromeDriver(); 
      try 
      { 
       //Here I config the stie 
       CommonActions actions = new CommonActions(driver); 
       actions.SwitchOffCombinedPaymentPage(); 
       driver.Dispose(); 
      } 
      catch (Exception) 
      { 
       driver.Dispose(); 
      } 
     } 
    } 

我在這之後還以爲是什麼,我就可以將參數發送到SetUpFixture但首先它是不可能的,其次,它不會解決問題,因爲此功能只會運行兩次,測試將針對最後一次配置運行。

所以,夥計們,如何處理一個網站測試,有很多配置?

回答

1

我會使用命令行中的測試運行參數(或者如果您使用的是VS適配器,則在.runsettings文件中)您的SetUpFixture可以獲取該參數並執行初始化以及需要它的任何單個固件可以抓住它。

請參閱--params選項到nunit3-console和TestContext.TestParameters屬性以訪問這些值。

這回答你的「首先它是不可能的」部分。我沒有回答「其次......」,因爲我不明白這一點。如果你能澄清,我會增加更多。

相關問題