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

emm*_*ojo 18 c# selenium nunit

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

TestBaseClass.cs

public class TestBaseClass
{

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

    [OneTimeTearDown]
    public void TearDown()
    {
        Driver.Close();
    }
}
Run Code Online (Sandbox Code Playgroud)

NavigationTests

[TestFixture]
public class NavigationTests : TestBaseClass
{
    // Tests
}
Run Code Online (Sandbox Code Playgroud)

MainPageTests

[TestFixture]
public class MainPageTests : TestBaseClass
{
    // Tests
}
Run Code Online (Sandbox Code Playgroud)

Cha*_*lie 23

OneTimeSetUpAttribute有两个用途.

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

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

有关SetUpFixture的更多信息,请参阅文档.