Skip to content

NUnit SetUp атрибуты и базовый класс

Посте того как мы создали уже несколько тестов нам нужно обратить внимание на то, что в каждом отдельном тесте мы создаем обобьет драйвера, настраиваем его и закрываем, что является само по себе дублированием кода и занимает у нас время на его написание и в будущем поддержание согласно нужных нам настроек.

Для решения этой проблемы мы можем вынести переменную нашего драйвера на уровень класса и создать пару методов, которые будут выполняться до и после каждого нашего теста.

Но, чтобы не нужно было вызывать эти методы вначале и конце наших тестов мы можем добавить им NUnit атрибуты [SetUp] и [TearDown]

А также мы понимаем, что у нас может быть не один тестовый набор (TestFixture), а больше, поэтому мы сразу же создаем базовый класс BaseTest, который наследовать для каждого тестового набора

public abstract class BaseTest
{
    protected IWebDriver driver;

    [SetUp]
    public virtual void TestSetUp()
    {
        driver = new ChromeDriver();
        driver.Manage().Window.Maximize();
        driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
        driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(120);
    }

    [TearDown]
    public virtual void TestTearDown()
    {
        driver.Quit();
    }
}

В этой же статье сразу хочу рассказать еще о нескольких полезных NUnit атрибутах.

[Category(“Regression”)] – этот атрибут можно добавлять как отдельному тесту так и всему набору сразу (если мы знаем, что они относятся к одной категории). Также мы можем присваивать несколько категорий. И было бы хорошо, если бы названия категорий у нас хранились в отдельном классе, поскольку в случае изменения имени категории, мы должны будем изменять ее во всех тестах.

После того как у наших тестов появились категории мы можем их удобно фильтровать и запускать:

[TestCase(TestName = “Wikipedia search test”)] – этот атрибут мы можем использовать вместо [Test] для присвоения нашим тестам более читабельных названий.

[Order(1)] – с помощью этого атрибута мы можем указывать очередность выполнения как конкретного теста так и целого набора. К примеру, первый набор тестов должен пройти тот, который создает разные сущности, а следующими уже могут выполняться тесты, которые работают ними. 

Leave a Reply

Your email address will not be published. Required fields are marked *