S — Single Responsibility Principle(Принцип единой ответственности)
У класса должна быть только одна причина для изменения. В контексте автоматизации тестирования избегайте добавления всего в один класс, метод или папку. Вместо этого сделайте каждую сущность, метод или класс ответственной за определенную логику.
Несколько примеров того, как вы можете это применить:
Объектная модель страницы:
Создайте отдельный класс для каждой страницы, например HomePage, LoginPage, OrdersPage и т. д. Вместо объединения всех локаторов страниц в один класс «PageObject», распределите их между отдельными классами, ответственными за соответствующие страницы.
Для больших страниц рассмотрите возможность разбить их на более мелкие PageFragments, такие как заголовок, таблица, нижний колонтитул и т. д.
Каждая функциональность должна иметь отдельный тестовый класс:
Это гарантирует, что каждый класс тестирования предназначен для тестирования определенной функции или функциональности.
Например, класс тестирования входа в систему должен сосредоточиться исключительно на тестировании функциональности входа в систему, и ему не следует поручить тестирование несвязанных функций, таких как регистрация пользователя.
// Принцип единой ответственности (SRP)
// Пример: создание отдельных тестовых классов для каждой функции или
пользовательской истории
{
[Test]
public void UserCanLoginSuccessfully()
{
// Логика тестирования для функциональности входа в систему
}
}
public class ShoppingCartTest
{
[Test]
public void UserCanAddItemToCart()
{
// Логика тестирования для добавления товаров в корзину
}
}
public class CheckoutTest
{
[Test]
public void UserCanCheckoutSuccessfully()
{
// Логика тестирования для функциональности оформления заказа
}
}
Пользовательский класс WebdriverFactory: мы можем настроить каждую реализацию WebDriver и добавить расширения для конкретных веб-драйверов.
public class WebDriverFactory
{
private IWebDriver Driver;
public IWebDriver InitDriver(AppiumLocalService appiumLocalService, EnvironmentConfig environmentConfig)
{
switch (platformName)
{
case PlatformName.Web:
switch (browserName)
{
case BrowserName.FireFox:
// Добавить параметры браузера Firefox
break;
case BrowserName.Chrome:
// Добавить параметры браузера
break;
}
break;
}
return Driver;
}
}
Вспомогательные классы:
Вам следует избегать создания вспомогательного класса, который включает в себя все текущие методы. Вместо этого рассмотрите возможность логического разделения этих классов.
Например, наличие разных вспомогательных классов для FileHelpers, DatabaseHelpers, CsvHelpers, JsonHelpers и т. д.
Один метод должен отвечать только за одно действие :
Когда метод вычисляет значение, он должен сосредоточиться исключительно на выполнении вычисления, не считывая это значение из файла, базы данных или другого внешнего источника. Любые дополнительные действия должны обрабатываться в отдельном классе или методе. Не забывайте учитывать истинную цель сущности при создании класса или метода и избегайте перегрузки ее несвязанной логикой.
Last updated
Was this helpful?