是否可以为所有测试设置[OneTimeSetup]?

时间:2017-02-13 20:42:25

标签: c# selenium nunit

我正在使用NUnit运行一些Selenium测试,我有一个小问题,我想看看是否可以纠正。发生的事情是每个灯具完成后 [OneTimeSetUp] [OneTimeTearDown] 正在运行。我想要的是在测试开始时运行一次[OneTimeSetUp],并在所有灯具完成后运行拆卸。

TestBaseClass.cs

public class TestBaseClass
{

    [OneTimeSetUp]
    public void Init()
    {
         // Login
    }

    [OneTimeTearDown]
    public void TearDown()
    {
        Driver.Close();
    }
}

NavigationTests

[TestFixture]
public class NavigationTests : TestBaseClass
{
    // Tests
}

MainPageTests

[TestFixture]
public class MainPageTests : TestBaseClass
{
    // Tests
}

1 个答案:

答案 0 :(得分:19)

OneTimeSetUpAttribute有两种用途。

首先,它标记了一个测试夹具中的方法,该方法在该fixtrue中的任何其他测试之前运行一次。通过从基类继承,这就是你如何使用它。由于继承,OneTimeSetUp出现在派生灯具的每个中,但它仍然运行多次,每次灯具运行一次。

第二种用法是在 SetUpFixture 中。如果在特定命名空间中创建SetUpFixture,它的OneTimeSetUp方法将在该命名空间中的任何其他测试之前运行一次。如果在任何命名空间之外创建SetUpFixture,那么它的OneTimeSetUp将在程序集中的任何测试之前运行一次

有关SetUpFixture的详细信息,请参阅docs