我正在使用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
}
答案 0 :(得分:19)
OneTimeSetUpAttribute有两种用途。
首先,它标记了一个测试夹具中的方法,该方法在该fixtrue中的任何其他测试之前运行一次。通过从基类继承,这就是你如何使用它。由于继承,OneTimeSetUp出现在派生灯具的每个中,但它仍然运行多次,每次灯具运行一次。
第二种用法是在 SetUpFixture 中。如果在特定命名空间中创建SetUpFixture,它的OneTimeSetUp方法将在该命名空间中的任何其他测试之前运行一次。如果在任何命名空间之外创建SetUpFixture,那么它的OneTimeSetUp将在程序集中的任何测试之前运行一次。
有关SetUpFixture的详细信息,请参阅docs。