learn how use testng annotations selenium
Як відомо більшості з вас, TestNG - це автоматизація фреймворк, який широко використовується в селені . Всім тестувальникам важливо зрозуміти анотації, які використовуються під час роботи з TestNG.
Простіше кажучи, анотації TestNG - це рядки коду, які вставляються в програму / бізнес-логіку для контролю того, як слід запускати наведені нижче методи.
У цій статті я зупинюсь на важливості різних типів анотацій та їх використанні.
Нижче я поділився налаштуваннями, використаними для мого проекту. Це не обов’язково потрібно дотримуватися для вашого проекту.
Анотації відрізняються залежно від вимог вашого проекту. Однак потік виконання буде однаковим.
Передумови:
- Встановіть TestNG в Eclipse. Перевірте цей посібник з посібника з встановлення .
- JDK - Набір для розробки Java
- Анотації можна використовувати лише з версією Java 1.5 або новішою
Перш ніж писати тестові сценарії або створювати проект, ми повинні знати ієрархію, в якій працюють анотації. Виконання завжди залишатиметься незмінним.
Наприклад, скомпілюйте та запустіть наведений нижче сценарій та зверніть увагу на порядок виконання. Це буде наступним чином:
- BeforeSuite
- BeforeTest
- BeforeClass
- BeforeMethod
- Тестовий випадок 1
- AfterMethod
- BeforeMethod
- Тестовий випадок 2
- AfterMethod
- Після занять
- AfterTest
- AfterSuite
Приклад:
public class test { @BeforeMethod public void beforeMethod() { System.out.println(' Before Method will execute before every test method'); } @AfterMethod public void afterMethod() { System.out.println('After Method will execute after every test method '); } @BeforeClass public void beforeClass() { System.out.println('Before Class will always execute prior to Before Method and Test Method '); } @AfterClass public void afterClass() { System.out.println('After Class will always execute later to After Method and Test method'); } @BeforeTest public void beforeTest() { System.out.println('Before Test will always execute prior to Before Class, ,Before Method and Test Method '); } @AfterTest public void afterTest() { System.out.println('After Test will always execute later to After Method, After Class '); } @BeforeSuite public void beforeSuite() { System.out.println(“Before Suite will always execute prior to all annotations or tests in the suite.'); } @AfterSuite public void afterSuite() { System.out.println('After suite will always execute at last when all the annotations or test in the suite have run.'); } @Test public void testCase1() { System.out.println('This is my First Test Case 1'); } @Test public void testCase2() { System.out.println('This is my Second Test Case 2'); } }
Ми можемо розбити процес тестового сценарію на наступні кроки:
- Напишіть ділову логіку тесту та вставте вище Анотації TestNG у вашому коді
- Додайте інформацію про свій тест (наприклад, назву класу, групи, методи, які ви хочете запустити тощо) в a testng.xml файл.
- Запустіть TestNG
Але питання все ще залишається - яку інформацію ми повинні подавати у вищезазначених анотаціях?
Погляньте на важливі кроки, яких ми можемо досягти, використовуючи наведені вище анотації:
# 1) @ Тест
Це основна частина нашого сценарію автоматизації, де ми будемо писати бізнес-логіку, те, що ми хочемо автоматизувати. Ми можемо передавати атрибути нашому методу тестування.
Нижче наведено списки атрибутів, які ми можемо передати нашому методу тесту:
- завжди біжи : Це використовується, коли ми хочемо переконатися, що метод завжди працює, навіть якщо параметри, від яких метод залежить, не вдаються. Якщо встановлено значення true, цей метод тестування завжди працюватиме. Наприклад: @Test (alwaysRun = true)
- dataProvider : TestNG dataProvider використовується для надання будь-яких даних для параметризації. Напр. @Test (dataProvider = “Привіт”).
- dataProviderClass : Це клас, звідки ми передаємо дані постачальнику даних. У нашому випадку ім'я класу dataProvider - 'Привіт'.
- dependOnGroups : Саме від списку груп залежить цей метод. Наприклад: @Test (groups = {“Місто”, “Штат”})
- dependOnMethods: Ця команда використовується для виконання методу на основі його залежного методу. Наприклад: @Test (dependOnMethods = {“OpenBrowser”, “база даних вичерпана”})
- опис : Це опис методу. Наприклад: @Test (опис = “метод тесту”)
- invocationCount : Посилається на кількість разів, за якими слід викликати метод. Це буде працювати як петля. Наприклад: @Test (invocationCount = 7) . Отже, цей метод буде виконуватися 7 разів.
- invocationTimeOut : Це стосується максимальної кількості мілісекунд, яку повинен пройти метод для завершення всього invocationCount. Цей атрибут буде проігноровано, якщо invocationCount не вказано. Наприклад: @Test (invocationCount = 7, invocationTimeOut = 30)
- пріоритет : Ця команда встановлює пріоритет методу тестування. Спочатку будуть призначені нижчі пріоритети. Наприклад: @Test (пріоритет = 1)
# два)@BeforeSuite та @AfterSuite
В @BeforeSuite анотований метод, ви можете налаштувати і запустити селен водії та в @AfterSuite анотований метод, ви можете зупинити драйвери Selenium
Приклад :
public class TestSuiteSetup () { @BeforeSuite(alwaysRun = true) public void setupSuite() { WebDriver driver = new FirefoxDriver(); } @AfterSuite(alwaysRun = true) public void tearDown() { driver().close(); } }
# 3)@BeforeClass та @AfterClass
В @BeforeClass анотований метод, ви можете налаштувати властивості firefox, ініціалізувати драйвер тощо @Після занять анотований метод, ви можете зупинити драйвер
Приклад :
@BeforeClass(description = 'Set capabilities for your Firefox browser and set time it should wait for a page to load.') public static void firefoxSetUp() throws MalformedURLException { DesiredCapabilities capability = DesiredCapabilities.firefox(); driver = new FirefoxDriver(capability); driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS); driver.manage().window().setSize(new Dimension(1920, 1080)); } @AfterClass(description = 'close your firefox driver') public void afterclass(){ driver.close(); }
# 4)@BeforeMethod та @AfterMethod
В @BeforeMethod анотований метод, ви можете перевірити підключення до бази даних перед виконанням вашого методу тестування та в @AfterMethod анотований метод, ви можете закрити з'єднання з базою даних
Приклад :
@BeforeMethod(description='connect to database') public void beforemethod() throws SQLException{ //check database connection is up String databaseurl = 'jdbc:oracle://192.168.1.258/myDB'; DriverManager.getConnection(databaseurl, 'username', 'password'); }
@AfterMethod(description='close database connection') public void aftermethod() throws SQLException{ //check database connection is closed String databaseurl = 'jdbc:oracle://192.168.1.258/myDB'; Connection connect = DriverManager.getConnection(databaseurl, 'username', 'password'); if(connect!=null) connect.close(); }
# 5)@BeforeTest та @AfterTest
В @BeforTest метод, ви можете встановити параметри вашого профілю Firefox і в @AfterTest методом, ви можете ввести якийсь код, який згенерує результат тесту, і надіслати його зацікавленим особам
Приклад :
@BeforeTest (description='set your firefox profile preferences according to your project requirement') public void single_run(){ FirefoxProfile firefoxProfile = new FirefoxProfile(); firefoxProfile.setPreference ('browser.download.folderList',2); firefoxProfile.setPreference ('browser.download.manager.showWhenStarting',false); firefoxProfile.setPreference ('browser.download.dir','E:\reports\'); firefoxProfile.setPreference ('browser.helperApps.neverAsk.saveToDisk','csv'); driver = new FirefoxDriver(firefoxProfile); String baseUrl = 'www.gmail.com'; } @AfterTest (description='') public void teardown(){ //a code which will send the test details report }
Найважливішим аспектом, який слід зазначити тут під час роботи з анотаціями, є те, що ваша система повинна бути обладнана версією Java 1.5 або новішої, інакше Eclipse може показати помилку, що анотації не підтримуються у вашій системі.
Тепер розглянемо випадок, коли у вашій системі є потрібна версія Java, необхідна для анотацій, але помилка все одно з’являється.
Щось як нижче:
Синтаксична помилка, анотації доступні, лише якщо рівень джерела становить 1,5 або більше.
Що ти будеш робити зараз? Існує три варіанти виправлення цієї ситуації.
Давайте пройдемося по одному:
Варіант No1:
- Перейдіть до Eclipse і клацніть правою кнопкою миші на своєму проекті
- Виберіть Властивості
- Клацніть на Java Compiler
- Переконайтесь, що рівень відповідності компілятора 1,5 або вище
- Збережіть налаштування, і ваша проблема вирішена
Варіант No2:
- Перейдіть на вкладку Вікно в Eclipse
- Виберіть Налаштування
- Клацніть на Java, а потім на Компілятор
- Переконайтесь, що рівень відповідності компілятора 1,5 або вище
- Збережіть налаштування, і ваша проблема вирішена
Варіант No3:
Перевірте свій домашній шлях Java, встановивши правильну змінну шляху середовища Java.
Висновок:
У цій статті ми спробували обговорити деякі важливі анотації та атрибути, які часто використовують тестувальники. Однак у TestNG є більше анотацій, які не часто використовуються, наприклад @AfterGroups, @BeforeGroups тощо, які використовуються під час роботи з групами у сценарії тесту проекту.
Тож використовуйте наведені вище анотації відповідно до ваших вимог. Завжди бажано не робити налаштування проекту методом тестування. У методі тестування напишіть основну бізнес-логіку, яку потрібно перевірити.
які там електронні листи
Переконайтеся, що ваша система оснащена версіями Java 1.5 або новішими, інакше Eclipse може показати помилку, що анотації не підтримуються у вашій системі.
Сподіваюся, ця стаття допоможе вам із анотаціями TestNG. Будь ласка, повідомте нас у разі будь-яких коментарів чи питань.
Рекомендована література
- Як використовувати TestNG Framework для створення сценаріїв селену - Підручник No12 для TestNG
- Знайти елемент селену за допомогою підручника з тексту з прикладами
- 30+ найкращих підручників із селену: вивчіть селен на реальних прикладах
- Підручник з огірка селену: інтеграція огірка Java Selenium WebDriver
- Вступ до Selenium WebDriver - Підручник з селену №8
- Ефективні сценарії сценаріїв та усунення несправностей селену - Підручник селену No27
- Налагодження сценаріїв селену за допомогою журналів (Підручник Log4j) - Підручник селену No26
- Підручник з Python DateTime із прикладами