Как использовать атрибут SetUp(OneTimeSetUp), TearDown(OneTimeTearDown) однажды за прогон тестов
Есть два теста, написанных в таком виде:
public class CreateAppointment : Base
{
[Test]
public void CreateAppoitment()
{
//....
}
}
public class CreateEncounter: Base
{
[Test]
public void CreateAppoitment()
{
//....
}
}
public class Base
{
[OneTimeSetUp]
public void Start()
{
//...
}
[OneTimeTearDown]
public void TestEnd()
{
//...
}
}
Не могу сделать чтобы SetUp выполнился один раз перед первым тестом и TearDown после второго. Данный код запускает SetUp и TearDown при выполнения каждого теста.
Ответы (2 шт):
Автор решения: Pavel Leonik
→ Ссылка
Проблема в том что я создаю драйвер в базовом классе и потом его юзаю. И чтобы сократить время тестов я хочу создать драйвер в начале и "убить" его в конце прогона.
public class TestA: Base
{
[Test]
public void TestA()
{
driver.FindElement(By.Id("a"));
}
}
public class TestB: Base
{
[Test]
public void TestB()
{
driver.FindElement(By.Id("b"));
}
}
public class Base
{
public IWebDriver driver;
[OneTimeSetUp]
public void Start()
{
driver = new ChromeDriver(new ChromeOptions());
}
[OneTimeTearDown]
public void TestEnd()
{
driver.Quit();
}
}
Автор решения: Андрей NOP
→ Ссылка
Используйте атрибут SetUpFixture для отдельного класса, при этом наследование вам не нужно.
using NUnit.Framework;
namespace NUnit.Tests
{
[SetUpFixture]
public class MySetUpClass
{
[OneTimeSetUp]
public void RunBeforeAnyTests()
{
// ...
}
[OneTimeTearDown]
public void RunAfterAnyTests()
{
// ...
}
}
}
В таком случае тестовый фреймворк выполнит сначала метод, помеченный OneTimeSetUp, в классе, помеченном SetUpFixture, потом все тесты в этом неймспейсе и потом метод, помеченный OneTimeTearDown