如何在运行自动化测试之前配置环境?

时间:2016-08-12 08:34:21

标签: unit-testing automation nunit automated-tests nunit-3.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 个答案:

答案 0 :(得分:1)

我将使用命令行中的测试运行参数(如果使用VS适配器,则使用.runsettings文件中)。您的SetUpFixture可以获取该参数并进行初始化,并且任何需要它的单个灯具都可以抓取它也是。

请参阅nunit3-console的--params选项和访问值的TestContext.TestParameters属性。

这回答了你的“首先不可能”的部分。我没有回答“第二个......”因为我不明白。如果你能澄清,我会加上更多。