TestNG е рамка за тестване, която обхваща различни видове тестови проекти като единичен тест, функционален тест, тест от край до край, UI тест и тест за интеграция.
Можете да изпълните един или няколко тестови случая във вашия Testng код.
Ако приоритетът на теста не е дефиниран докато изпълнява множество тестови случаи, TestNG присвоява на всички @Test приоритет като нула (0).
Сега, докато бягате; първо ще бъдат насрочени по-ниски приоритети.
В този урок ще научите -
- Демонстрация на TestNG код без Приоритет
- Демонстрация на TestNG код без приоритет по азбучен ред
- Как да зададете приоритет в TestNG
- Методи със същия приоритет
- Комбиниране както на приоритетни (със същия приоритет), така и на неприоритетни методи
Демонстрация на TestNG код без Приоритет
Нека вземем сценарий, при който ще е необходимо секвениране, за да преминат всички тестови случаи:
Сценарий: Генерирайте код, където трябва да извършите търсене в Google с конкретна ключова дума, кажете „Facebook“. Сега проверете дали заглавието на браузъра е променено на „Facebook - Google Search“.
Забележка: Всяка стъпка, която кодирате, трябва да бъде в отделни методи
Метод 1 : Отворете браузъра кажете Firefox (openBrowser ())
Метод 2 : Стартирайте Google.com (launchGoogle ())
Метод 3 : Извършете търсене с помощта на "Facebook" (performSearchAndClick1stLink ())
Метод 4 : Проверете заглавието на страницата за търсене с Google (FaceBookPageTitleVerification ())
Код за нашия сценарий :
внос org.openqa.selenium.By;импортиране на org.openqa.selenium.WebDriver;импортиране на org.openqa.selenium.firefox.FirefoxDriver;import org.testng.Assert;внос org.testng.annotations.Test;публичен клас Priority_In_testNG {Драйвер за WebDriver;// Метод 1: Отворете браузъра, кажете Firefox@Тестpublic void openBrowser () {драйвер = нов FirefoxDriver ();}// Метод 2: Стартирайте Google.com@Тестpublic void launchGoogle () {driver.get ("http://www.google.co.in");}// Метод 3: Извършете търсене с помощта на "Facebook"@Тестpublic void peformSeachAndClick1stLink () {driver.findElement (By.xpath (".//*[@ title = 'Търсене']")). sendKeys ("Facebook");}// Метод 4: Проверете заглавието на страницата за търсене в Google.@Тестpublic void FaceBookPageTitleVerification () хвърля изключение {driver.findElement (By.xpath (".//*[@ value = 'Търсене']")). click ();Thread.sleep (3000);Assert.assertEquals (driver.getTitle (). Съдържа („Facebook - Търсене в Google“), вярно);}}
Обяснение на кода
Както бе споменато по-горе, ние създадохме 4 тестови случая за извършване на всяко действие по независими методи.
- Първият метод (openBrowser) гласи за инициализиране на браузъра Firefox.
- Вторият метод (launchGoogle) гласи, че стартирането на Google.com е в инициализирания браузър.
- Третият метод (peformSeachAndClick1stLink) гласи, че извършва търсене в полето за търсене (с xpath (".//*[@title='Search ']") с термин за търсене като Facebook и
- Четвъртият и последен метод (FaceBookPageTitleVerification) гласи, че щракнете върху иконата за търсене на Google и потвърдете, че заглавието на браузъра е променено на Facebook - Google Search.
Сега стартирайте този код, като използвате testNG, както е показано във видеото, ще откриете, че всички тестови случаи са неуспешни. Причината за неуспеха: тъй като има зависимост от преминаване на предишен тестов случай, ще бъде предаден само текущият текущ тестов случай.
В такъв случай,
- Първият метод, който се изпълнява, е openBrowser (). Той премина, защото няма никаква зависимост.
- Вторият изпълнен метод е FaceBookPageTitleVerification (); той е неуспешен, защото се опитваме да щракнем върху бутона за търсене и да проверим заглавието на браузъра.
- Можете да видите, че ако активността при търсене не се обработва, тогава как всяка друга стъпка може да премине. Следователно това е причината моите тестови случаи да се провалят.
ПРИЛОЖЕН: openBrowserFAILED: FaceBookPageTitleVerificationFAILED: launchGoogleFAILED: peformSeachAndClick1stLink
Демонстрация на TestNG код без приоритет по азбучен ред
Ако не споменем никакъв приоритет, testng ще изпълни методите @Test въз основа на азбучен ред на имената на техните методи, независимо от мястото им на изпълнение в кода.
пакет com.guru.testngannotations;внос org.testng.annotations.Test;публичен клас TestNG_Priority_Annotations {@Тестpublic void c_method () {System.out.println ("Аз съм в метод C");}@Тестpublic void b_method () {System.out.println ("Аз съм в метод Б");}@Тестpublic void a_method () {System.out.println ("Аз съм в метод А");}@Тестpublic void e_method () {System.out.println ("Аз съм в метод E");}@Тестpublic void d_method () {System.out.println ("Аз съм в метод D");}}
Изход
Аз съм в метод ААз съм в метод БАз съм в метод CАз съм в метод DАз съм в метод Е
Въпреки че дефинирахме методите по случаен начин (c, b, a, e, d), testng изпълни методите въз основа на техните имена на методи, като взе предвид азбучния ред и същото се отрази и в резултата.
Как да зададете приоритет в TestNG
Както видяхте в предишния пример, че последователността е необходима, за да се премине този сценарий, така че ние ще модифицираме предишната част от кода с Приоритетен параметър, така че всеки тест да работи срещу приоритета, присвоен им.
Както можете да видите, ние сме присвоили приоритет на всеки тестов случай, означава, че тестовият случай ще изпълни първо стойността с по-нисък приоритет.
Приоритет в тестNG в действие
внос org.openqa.selenium.By;импортиране на org.openqa.selenium.WebDriver;импортиране на org.openqa.selenium.firefox.FirefoxDriver;import org.testng.Assert;внос org.testng.annotations.Test;публичен клас Priority_In_testNG {Драйвер за WebDriver;// Метод 1: Отворете браузъра кажете Firefox@ Тест (приоритет = 1)public void openBrowser () {драйвер = нов FirefoxDriver ();}// Метод 2: Стартирайте Google.com@ Тест (приоритет = 2)public void launchGoogle () {driver.get ("http://www.google.co.in");}// Метод 3: Извършете търсене с помощта на "Facebook"@ Тест (приоритет = 3)public void peformSeachAndClick1stLink () {driver.findElement (By.xpath (".//*[@ title = 'Търсене']")). sendKeys ("Facebook");}// Метод 4: Проверете заглавието на страницата за търсене в Google.@ Тест (приоритет = 4)public void FaceBookPageTitleVerification () хвърля изключение {driver.findElement (By.xpath (".//*[@ value = 'Търсене']")). click ();Thread.sleep (3000);Assert.assertEquals (driver.getTitle (). Съдържа („Facebook - Търсене в Google“), вярно);}}
Обяснение на кода
След като зададете приоритет на всеки тестов случай, стартирайте горния код, използвайки testNG, както е показано в Video-2, споменато по-долу.
Тук можете да видите, че тестовите случаи са приоритетни. Първо се изпълняват тестови случаи с по-нисък приоритет, т.е. сега в тестовите случаи има последователно изпълнение според приоритета. Следователно всички тестови случаи преминават сега.
Обърнете внимание на конзолата на eclipse:
Изход :
ПРИЛОЖЕН: openBrowserПРИЛОЖЕН: стартиране на GoogleПРИЛОЖЕН: peformSearchAndClick1stLinkПРЕХОДЕН: FaceBookPageTitleVerification
Номер 0 има най-висок приоритет (той ще бъде изпълнен първи) и приоритетът се основава на дадения номер, т.е. 0 има най-висок приоритет от 1. 1 има най-висок приоритет от 2 и т.н.
пакет com.guru.testngannotations;внос org.testng.annotations.Test;публичен клас TestNG_Priority_Annotations {@ Тест (приоритет = 6)public void c_method () {System.out.println ("Аз съм в метод C");}@ Тест (приоритет = 9)public void b_method () {System.out.println ("Аз съм в метод Б");}@ Тест (приоритет = 1)public void a_method () {System.out.println ("Аз съм в метод А");}@ Тест (приоритет = 0)public void e_method () {System.out.println ("Аз съм в метод E");}@ Тест (приоритет = 3)public void d_method () {System.out.println ("Аз съм в метод D");}}
Изход
Аз съм в метод ЕАз съм в метод ААз съм в метод DАз съм в метод CАз съм в метод Б
Тук сме предоставили приоритетите като 0,1,3,6,9. И така, първо се изпълнява метод с приоритет 0 и след това метод с приоритет-1 и т.н. Тук името на метода на азбучния ред няма да се разглежда, тъй като сме предоставили приоритетите
Методи със същия приоритет:
Възможно е методите да съдържат същия приоритет. В тези случаи testng взема предвид азбучния ред на имената на методите, чийто приоритет е еднакъв.
пакет com.guru.testngannotations;внос org.testng.annotations.Test;публичен клас TestNG_Priority_Annotations {@ Тест (приоритет = 6)public void c_method () {System.out.println ("Аз съм в метод C");}@ Тест (приоритет = 9)public void b_method () {System.out.println ("Аз съм в метод Б");}@ Тест (приоритет = 6)public void a_method () {System.out.println ("Аз съм в метод А");}@ Тест (приоритет = 0)public void e_method () {System.out.println ("Аз съм в метод E");}@ Тест (приоритет = 3)public void d_method () {System.out.println ("Аз съм в метод D");}}
Изход
Аз съм в метод ЕАз съм в метод DАз съм в метод ААз съм в метод CАз съм в метод Б
Тук 'e' и 'd' се изпълняват въз основа на техните приоритетни стойности. Но методите 'a' и 'c' съдържат една и съща приоритетна стойност (6). И така, тук testng разглежда азбучния ред на „a“ и „c“ и ги изпълнява съответно.
Комбиниране както на приоритетни (със същия приоритет), така и на неприоритетни методи:
В този случай ще обхванем два случая в един testng клас.
- Методи със същата приоритетна стойност.
- Повече от един неприоритетен метод.
пакет com.guru.testngannotations;внос org.testng.annotations.Test;публичен клас TestNG_Priority_Annotations {@Тест()public void c_method () {System.out.println ("Аз съм в метод C");}@Тест()public void b_method () {System.out.println ("Аз съм в метод Б");}@ Тест (приоритет = 6)public void a_method () {System.out.println ("Аз съм в метод А");}@ Тест (приоритет = 0)public void e_method () {System.out.println ("Аз съм в метод E");}@ Тест (приоритет = 6)public void d_method () {System.out.println ("Аз съм в метод D");}}
Изход:
Аз съм в метод БАз съм в метод CАз съм в метод ЕАз съм в метод ААз съм в метод D
ПРИЛОЖЕН: b_methodПРИЛОЖЕН: c_methodПРИЛОЖЕН: e_methodПРИЛАГА: a_methodПРИЛОЖЕН: d_method
Обяснение:
Първо предпочитание: Методи без приоритет: „c“ и „b“: Въз основа на азбучен ред първо се изпълнява „b“ и след това „c“.
Второ предпочитание: Приоритетни методи: „a“, „e“ и „d“: „e“ беше изпълнено първо, тъй като имаше най-висок приоритет (0). Тъй като приоритетите на методите 'a' и 'd' бяха еднакви, testng взе предвид азбучния ред на имената на техните методи. И така, между тях първо беше изпълнено „а“, а след това „г“.
Чувствителен към малки и големи букви в TestNG
Само за ваша информация има стандартен синтаксис за дефиниране приоритет в testNG т.е. @Test (приоритет = 4) , предполагам, че са го определяне по друг синтаксис каже @Test (ПРИОРИТЕТ = 1) след това си IDE ще го покаже като грешка компилация . Вижте изображението по-долу:
Заключение:
Както видяхте, че ако има изискване да стартирате набор от тестови случаи в определена последователност, това може лесно да се направи, като се използва приоритет, като се използва testNG като инструмент за изпълнение.
Този урок е възможен благодарение на приноса на Рамандип Сингх и Рама Кришна Гаде