2016-08-12 113 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属性以访问这些值。

这回答你的“首先它是不可能的”部分。我没有回答“其次......”,因为我不明白这一点。如果你能澄清,我会增加更多。

相关问题