learn how use testng annotations selenium
Както повечето от вас знаят, TestNG е автоматизация рамка, широко използвана в Селен . Важно е за всички тестери да разберат анотациите, използвани по време на работа с TestNG.
По-просто казано, анотациите на TestNG са редове с код, които се вмъкват в програмата / бизнес логиката, за да контролират как да се изпълняват методите по-долу.
В тази статия ще се съсредоточа върху важността на различните видове анотации и тяхното използване.
По-долу споделих настройките, използвани за моя проект. Това не е задължително да се спазва за вашия проект.
Анотациите се различават в зависимост от изискванията на вашия проект. Потокът на изпълнение обаче ще бъде същият.
Предпоставки:
- Инсталирайте TestNG в Eclipse. Проверете този урок за Ръководство за инсталиране .
- JDK - Комплект за разработка на Java
- Анотациите могат да се използват само с версия Java 1.5 или по-нова
Преди да напишем тестови скриптове или да настроим проект, трябва да знаем йерархията, в която анотациите работят. Изпълнението винаги ще остане същото.
Например, компилирайте и стартирайте скрипта по-долу и забележете реда за изпълнение. Ще бъде както следва:
- BeforeSuite
- Преди Тест
- Преди Клас
- 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 се използва за предоставяне на всякакви данни за параметризиране. Напр. @ Тест (dataProvider = „Здравейте“).
- dataProviderClass : Това е класът, от който предаваме данните на доставчика на данни. В нашия случай името на класа dataProvider е „Здравейте“.
- zavisiOnGroups : Това е списъкът на групите, от които зависи този метод. Например: @ Тест (групи = {„Град“, „Щат“})
- zavisiOnMethods: Тази команда се използва за изпълнение на метод, базиран на зависимия от него метод. Например: @Test (dependOnMethods = {„OpenBrowser“, „базата данни е изтекла“})
- описание : Това е описанието на метода. Например: @ Тест (описание = „метод за изпитване“)
- invocationCount : Той се отнася до броя пъти, в които даден метод трябва да бъде извикан. Ще работи като цикъл. Например: @Test (invocationCount = 7) . Следователно този метод ще се изпълни 7 пъти.
- invocationTimeOut : Това се отнася до максималния брой милисекунди, които методът трябва да отнеме, за да завърши всички invocationCount. Този атрибут ще бъде игнориран, ако invocationCount не е посочен. Например: @Test (invocationCount = 7, invocationTimeOut = 30)
- приоритет : Тази команда задава приоритета на тестовия метод. Първо ще бъдат насрочени по-ниски приоритети. Например: @ Тест (приоритет = 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 или повече.
Какво ще правиш сега? Има три възможности за коригиране на тази ситуация.
Нека да го разгледаме един по един:
Опция 1:
- Отидете на Eclipse и щракнете с десния бутон върху вашия проект
- Изберете Properties
- Кликнете върху Java Compiler
- Уверете се, че нивото на съответствие на Compiler е 1,5 или по-високо
- Запазете настройките и проблемът ви е решен
Вариант # 2:
- Отидете на раздела Window в Eclipse
- Изберете Предпочитания
- Кликнете върху Java и след това върху Compiler
- Уверете се, че нивото на съответствие на Compiler е 1,5 или по-високо
- Запазете настройките и проблемът ви е решен
Вариант # 3:
Проверете вашия домашен път на Java, като зададете правилната променлива на пътя на Java среда.
Заключение:
Чрез тази статия се опитахме да обсъдим някои от важните пояснения и атрибути, които често се използват от тестерите. В TestNG обаче има повече анотации, които не се използват често, като например @AfterGroups, @BeforeGroups и така нататък, които се използват, когато работите с групи в тестовия скрипт на вашия проект.
Затова използвайте горните пояснения според вашите изисквания. Винаги е препоръчително да не правите настройката на вашия проект в тестов метод. В тестовия метод напишете основната бизнес логика, която трябва да бъде тествана.
разликата между c и c ++
Уверете се, че вашата система е оборудвана с версии Java 1.5 или по-нови, в противен случай Eclipse може да покаже грешка, че анотациите не се поддържат във вашата система.
Надявам се тази статия да ви помогне с анотации на TestNG. Моля, уведомете ни в случай на коментари или въпроси.
Препоръчително четене
- Как да използвам TestNG Framework за създаване на селенови скриптове - TestNG Selenium Tutorial # 12
- Намиране на елемент от селен чрез урок с текст с примери
- 30+ най-добри урока за селен: Научете селен с реални примери
- Урок за краставици селен: Интеграция на краставица Java Selenium WebDriver
- Въведение в Selenium WebDriver - Урок № 8 за селен
- Ефективни сценарии за скриптове и отстраняване на неизправности при селен - Урок №27 за селен
- Отстраняване на грешки в скриптове за селен с регистрационни файлове (Урок за Log4j) - Урок за селен # 26
- Урок за Python DateTime с примери