2017-02-13 124 views
5

我正在使用NUnit来运行一些Selenium测试,并且我有一个小问题,我想查看是否可以纠正。发生什么事情是[OneTimeSetUp][OneTimeTearDown]在每个灯具结束后运行。我想要的是在测试开始时运行一次[OneTimeSetUp],并在所有灯具结束后运行拆卸。是否可以为所有测试设置[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 
} 

回答

8

OneTimeSetUpAt贡品有两个用途。

首先,它在测试夹具中标记一个方法,该方法在该固定程序中的任何其他测试之前运行一次。通过继承基类,您就是这么使用它的。 OneTimeSetUp出现,归功于继承,每个您的派生灯具,但它仍然运行多次,每个灯具一次。

第二次使用是在SetUpFixture。如果您在特定命名空间中创建SetUpFixture,则OneTimeSetUp方法将在该命名空间中的任何其他测试之前运行一次。如果您在任何名称空间之外创建SetUpFixture,则其OneTimeSetUp将在程序集中的任何测试之前运行一次。请参阅docs

相关问题