learn how use testng annotations selenium
TestNG, jak większość z was wie, to automatyzacja framework szeroko stosowany w Selenium . Wszyscy testerzy powinni rozumieć adnotacje używane podczas pracy z TestNG.
Mówiąc prościej, adnotacje TestNG to wiersze kodu wstawiane do logiki programu / biznesowej w celu kontrolowania sposobu uruchamiania poniższych metod.
W tym artykule skupię się na znaczeniu różnych typów adnotacji i ich zastosowaniu.
Poniżej udostępniłem konfigurację używaną w moim projekcie. Nie musi to koniecznie być przestrzegane w przypadku Twojego projektu.
Adnotacje różnią się w zależności od wymagań projektu. Jednak przepływ wykonania będzie taki sam.
Wymagania wstępne:
- Zainstaluj TestNG w Eclipse. Czek ten samouczek dotyczący instrukcji instalacji .
- JDK - Zestaw narzędzi programistycznych Java
- Adnotacji można używać tylko z wersją Java 1.5 lub nowszą
Przed napisaniem skryptów testowych lub założeniem projektu powinniśmy znać hierarchię, w której działają adnotacje. Wykonanie zawsze pozostanie takie samo.
Na przykład, skompiluj i uruchom poniższy skrypt i zwróć uwagę na kolejność wykonania. Będzie wyglądać następująco:
- BeforeSuite
- Przed testem
- Przed zajęciami
- BeforeMethod
- Przypadek testowy 1
- AfterMethod
- BeforeMethod
- Przypadek testowy 2
- AfterMethod
- Po zajęciach
- AfterTest
- AfterSuite
Przykład:
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'); } }
Możemy podzielić proces skryptu testowego na poniższe kroki:
- Napisz logikę biznesową swojego testu i wstaw ją powyżej Adnotacje TestNG w swoim kodzie
- Dodaj informacje o swoim teście (np. Nazwę klasy, grupy, metody, które chcesz uruchomić itp.) W pliku testng.xml plik.
- Uruchom TestNG
Pozostaje jednak pytanie - jakie informacje podać w powyższych adnotacjach?
Spójrz na ważne kroki, które możemy osiągnąć, korzystając z powyższych adnotacji:
# 1) @Test
To jest główna część naszego skryptu automatyzacji, w którym napiszemy logikę biznesową, czyli rzeczy, które chcemy zautomatyzować. Możemy przekazać atrybuty naszej metodzie testowej.
Poniżej znajduje się lista atrybutów, które możemy przekazać do naszej metody Test:
- zawsze Biegnij : Jest to używane, gdy chcemy się upewnić, że metoda zawsze działa, nawet jeśli parametry, od których metoda zależy, zawiodą. Jeśli jest ustawiona na true, ta metoda testowa będzie zawsze działać. Na przykład: @Test (alwaysRun = true)
- dostawca danych : TestNG dataProvider służy do dostarczania dowolnych danych do parametryzacji. Na przykład. @Test (dataProvider = „Witaj”).
- dataProviderClass : To jest klasa, z której przekazujemy dane do dostawcy danych. W naszym przypadku nazwa klasy dataProvider to „Hello”.
- dependOnGroups : Jest to lista grup, od których zależy ta metoda. Na przykład: @Test (groups = {„City”, „State”})
- dependOnMethods: To polecenie służy do wykonywania metody opartej na metodzie zależnej. Na przykład: @Test (dependsOnMethods = {„OpenBrowser”, „Baza danych działa”})
- opis : To jest opis metody. Na przykład: @Test (opis = „metoda testowa”)
- invocationCount : Odnosi się do liczby wywołań metody. Będzie działać jako pętla. Na przykład: @Test (invocationCount = 7) . W związku z tym ta metoda zostanie wykonana 7 razy.
- invocationTimeOut : Odnosi się to do maksymalnej liczby milisekund, jaką metoda powinna zająć do zakończenia całej metody invocationCount. Ten atrybut zostanie zignorowany, jeśli nie określono invocationCount. Na przykład: @Test (invocationCount = 7, invocationTimeOut = 30)
- priorytet : To polecenie ustawia priorytet metody testowej. Niższe priorytety zostaną zaplanowane jako pierwsze. Na przykład: @Test (priorytet = 1)
#dwa)@BeforeSuite i @AfterSuite
W @BeforeSuite opisaną metodą, możesz ustawić i rozpocząć selen kierowców i w @AfterSuite opisaną metodą, możesz zatrzymać sterowniki Selenium
Przykład :
public class TestSuiteSetup () { @BeforeSuite(alwaysRun = true) public void setupSuite() { WebDriver driver = new FirefoxDriver(); } @AfterSuite(alwaysRun = true) public void tearDown() { driver().close(); } }
# 3)@BeforeClass i @AfterClass
W @Przed zajęciami opisaną metodą, możesz skonfigurować właściwości przeglądarki Firefox, zainicjować sterownik i tak dalej @Po zajęciach opisaną metodą, możesz zatrzymać sterownik
Przykład :
@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 i @AfterMethod
W @BeforeMethod z adnotacjami, możesz sprawdzić połączenie z bazą danych przed wykonaniem metody testowej i w @AfterMethod opisaną metodą, możesz zamknąć połączenie z bazą danych
Przykład :
@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 i @AfterTest
W @BeforTest możesz ustawić preferencje profilu Firefoksa i w @AfterTest możesz umieścić kod, który wygeneruje wynik testu i wysłać go do udziałowców
Przykład :
@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 }
Najważniejszym aspektem, na który należy zwrócić uwagę podczas pracy z adnotacjami, jest to, że twój system powinien być wyposażony w wersję Java 1.5 lub nowszą, w przeciwnym razie Eclipse może wyświetlić błąd, że adnotacje nie są obsługiwane w twoim systemie.
Rozważmy teraz przypadek, w którym twój system ma odpowiednią wersję Java potrzebną do adnotacji, ale błąd nadal się pojawia.
Coś jak poniżej:
Błąd składni, adnotacje są dostępne tylko wtedy, gdy poziom źródła wynosi 1,5 lub więcej.
Co teraz zrobisz? Tam są trzy opcje naprawy tej sytuacji.
jak otworzyć pliki 7zip na komputerze Mac
Przejdźmy przez to jeden po drugim:
Opcja 1:
- Przejdź do Eclipse i kliknij prawym przyciskiem myszy swój projekt
- Wybierz Właściwości
- Kliknij Kompilator Java
- Upewnij się, że poziom zgodności kompilatora wynosi 1,5 lub więcej
- Zapisz ustawienia, a problem zostanie rozwiązany
Opcja 2:
- Przejdź do zakładki Window w Eclipse
- Wybierz Preferencje
- Kliknij Java, a następnie Kompilator
- Upewnij się, że poziom zgodności kompilatora wynosi 1,5 lub więcej
- Zapisz ustawienia, a problem zostanie rozwiązany
Opcja nr 3:
Sprawdź swoją ścieżkę główną Java, ustawiając poprawną zmienną ścieżki środowiska Java.
Wniosek:
W tym artykule staraliśmy się omówić niektóre ważne adnotacje i atrybuty, które są często używane przez testerów. Jednak w TestNG jest więcej adnotacji, które nie są często używane, takich jak @AfterGroups, @BeforeGroups i tak dalej, które są używane podczas pracy z grupami w skrypcie testowym projektu.
Dlatego użyj powyższych adnotacji zgodnie z własnymi wymaganiami. Zawsze odradza się konfigurowanie projektu metodą testową. W metodzie testowej napisz podstawową logikę biznesową, która ma być testowana.
Upewnij się, że Twój system jest wyposażony w wersję Java 1.5 lub nowszą, w przeciwnym razie Eclipse może wyświetlić błąd, że adnotacje nie są obsługiwane w Twoim systemie.
Mam nadzieję, że ten artykuł pomoże Ci z adnotacjami TestNG. W przypadku jakichkolwiek komentarzy lub pytań prosimy o kontakt.
rekomendowane lektury
- Jak używać platformy TestNG do tworzenia skryptów selenium - Samouczek TestNG Selenium nr 12
- Selenium Find Element By Text Samouczek z przykładami
- 30+ najlepszych samouczków dotyczących selenu: naucz się selenu z prawdziwymi przykładami
- Cucumber Selenium Tutorial: Integracja Cucumber Java Selenium WebDriver
- Wprowadzenie do Selenium WebDriver - samouczek Selenium # 8
- Efektywne skrypty Selenium i scenariusze rozwiązywania problemów - samouczek Selenium nr 27
- Debugowanie skryptów Selenium za pomocą dzienników (samouczek Log4j) - samouczek Selenium # 26
- Python DateTime Tutorial z przykładami