learn how use testng annotations selenium
TestNG ist, wie die meisten von Ihnen wissen, eine Automatisierung in Selen weit verbreitetes Gerüst . Für alle Tester ist es wichtig, die bei der Arbeit mit TestNG verwendeten Anmerkungen zu verstehen.
Vereinfacht ausgedrückt sind TestNG-Annotationen Codezeilen, die in die Programm- / Geschäftslogik eingefügt werden, um zu steuern, wie die folgenden Methoden ausgeführt werden sollen.
In diesem Artikel werde ich mich auf die Bedeutung verschiedener Arten von Anmerkungen und deren Verwendung konzentrieren.
Unten habe ich das für mein Projekt verwendete Setup freigegeben. Dies muss für Ihr Projekt nicht unbedingt beachtet werden.
Die Anmerkungen unterscheiden sich je nach Ihren Projektanforderungen. Der Ausführungsfluss ist jedoch der gleiche.
Voraussetzungen:
- Installieren Sie TestNG in Eclipse. Prüfen Dieses Tutorial zur Installationsanleitung .
- JDK - Java Entwickler-Kit
- Anmerkungen können nur mit Java 1.5 oder höher verwendet werden
Bevor wir Testskripte schreiben oder ein Projekt einrichten, sollten wir die Hierarchie kennen, in der die Anmerkungen funktionieren. Die Ausführung bleibt immer gleich.
Zum Beispiel, kompilieren und führen Sie das folgende Skript aus und beachten Sie die Ausführungsreihenfolge. Es wird wie folgt sein:
- BeforeSuite
- BeforeTest
- Vor dem Unterricht
- BeforeMethod
- Testfall 1
- AfterMethod
- BeforeMethod
- Testfall 2
- AfterMethod
- Nach dem Unterricht
- AfterTest
- AfterSuite
Beispiel::
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'); } }
Wir können den Testskriptprozess in die folgenden Schritte unterteilen:
- Schreiben Sie die Geschäftslogik Ihres Tests und fügen Sie sie oben ein TestNG-Anmerkungen in Ihrem Code
- Fügen Sie die Informationen zu Ihrem Test (z. B. den Klassennamen, die Gruppen, Methoden, die Sie ausführen möchten usw.) in a hinzu testng.xml Datei.
- Führen Sie TestNG aus
Die Frage bleibt jedoch weiterhin: Welche Informationen sollten wir in den obigen Anmerkungen bereitstellen?
Schauen Sie sich die wichtigen Schritte an, die wir mit den obigen Anmerkungen erreichen können:
# 1) @Prüfung
Dies ist der Hauptteil unseres Automatisierungsskripts, in dem wir die Geschäftslogik schreiben, die Dinge, die wir automatisieren möchten. Wir können Attribute an unsere Testmethode übergeben.
Nachfolgend finden Sie eine Liste der Attribute, die wir an unsere Testmethode übergeben können:
- alwaysRun : Dies wird verwendet, wenn sichergestellt werden soll, dass eine Methode immer ausgeführt wird, auch wenn die Parameter, von denen die Methode abhängt, fehlschlagen. Wenn true festgelegt ist, wird diese Testmethode immer ausgeführt. Z.B: @Test (alwaysRun = true)
- Datenanbieter : TestNG dataProvider wird verwendet, um Daten für die Parametrisierung bereitzustellen. Z.B. @Test (dataProvider = 'Hallo').
- dataProviderClass : Dies ist die Klasse, von der aus wir die Daten an den Datenprovider übergeben. In unserem Fall lautet der Name der dataProvider-Klasse 'Hallo'.
- hängt von Gruppen ab : Dies ist die Liste der Gruppen, von denen diese Methode abhängt. Z.B: @Test (groups = {'Stadt', 'Bundesland'})
- abhängige Methoden: Dieser Befehl wird verwendet, um eine Methode basierend auf ihrer abhängigen Methode auszuführen. Z.B: @Test (abhängigeOnMethoden = {'OpenBrowser', 'Datenbank ist aktiv'})
- Beschreibung : Dies ist die Beschreibung für die Methode. Z.B: @Test (description = 'Testmethode')
- invocationCount : Gibt an, wie oft eine Methode aufgerufen werden soll. Es wird als Schleife funktionieren. Z.B: @Test (invocationCount = 7) . Daher wird diese Methode siebenmal ausgeführt.
- invocationTimeOut : Dies bezieht sich auf die maximale Anzahl von Millisekunden, die eine Methode benötigen sollte, um den gesamten invocationCount abzuschließen. Dieses Attribut wird ignoriert, wenn invocationCount nicht angegeben ist. Z.B: @Test (invocationCount = 7, invocationTimeOut = 30)
- Priorität : Dieser Befehl legt die Priorität der Testmethode fest. Niedrigere Prioritäten werden zuerst geplant. Z.B: @ Test (Priorität = 1)
#zwei)@BeforeSuite und @AfterSuite
Im @BeforeSuite kommentierte Methode, können Sie einrichten und starten Selen Fahrer und in @ AfterSuite Mit einer kommentierten Methode können Sie Selenium-Treiber stoppen
Beispiel ::
public class TestSuiteSetup () { @BeforeSuite(alwaysRun = true) public void setupSuite() { WebDriver driver = new FirefoxDriver(); } @AfterSuite(alwaysRun = true) public void tearDown() { driver().close(); } }
#3)@BeforeClass und @AfterClass
Im @Vor dem Unterricht Mit einer kommentierten Methode können Sie Ihre Firefox-Eigenschaften einrichten, Ihren Treiber initialisieren usw. @Nach dem Unterricht kommentierte Methode, können Sie Treiber stoppen
Beispiel ::
@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 und @AfterMethod
Im @BeforeMethod Mit einer kommentierten Methode können Sie die Datenbankverbindung überprüfen, bevor Sie Ihre Testmethode ausführen und in @ AfterMethod Mit einer kommentierten Methode können Sie Ihre Datenbankverbindung schließen
Beispiel ::
@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 und @AfterTest
Im @ BeforTest Methode können Sie Ihre Firefox-Profileinstellungen und in festlegen @ AfterTest Methode können Sie einen Code eingeben, der das Testergebnis generiert und an die Stakeholder sendet
Beispiel ::
@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 }
Der wichtigste Aspekt, der hier bei der Arbeit mit Anmerkungen beachtet werden sollte, ist, dass Ihr System mit Java 1.5 oder höher ausgestattet sein sollte. Andernfalls zeigt Eclipse möglicherweise den Fehler an, dass Anmerkungen auf Ihrem System nicht unterstützt werden.
Stellen Sie sich nun einen Fall vor, in dem Ihr System über die richtige Java-Version verfügt, die für Anmerkungen benötigt wird, der Fehler jedoch weiterhin auftritt.
So etwas wie unten:
Syntaxfehler, Anmerkungen sind nur verfügbar, wenn die Quellenebene 1,5 oder höher ist.
Was wirst du jetzt machen? Es gibt drei Möglichkeiten, um diese Situation zu korrigieren.
Lassen Sie uns eins nach dem anderen durchgehen:
Option 1:
- Gehen Sie zu Eclipse und klicken Sie mit der rechten Maustaste auf Ihr Projekt
- Wählen Sie Eigenschaften
- Klicken Sie auf Java Compiler
- Stellen Sie sicher, dass Ihre Compiler-Konformitätsstufe 1,5 oder höher ist
- Speichern Sie die Einstellungen und Ihr Problem ist gelöst
Option 2:
- Gehen Sie in Eclipse zur Registerkarte Fenster
- Wählen Sie Einstellungen
- Klicken Sie auf Java und dann auf Compiler
- Stellen Sie sicher, dass Ihre Compiler-Konformitätsstufe 1,5 oder höher ist
- Speichern Sie die Einstellungen und Ihr Problem ist gelöst
Option 3:
Überprüfen Sie Ihren Java-Home-Pfad, indem Sie die richtige Java-Umgebungspfadvariable festlegen.
Fazit:
In diesem Artikel haben wir versucht, einige der wichtigen Anmerkungen und Attribute zu diskutieren, die häufig von Testern verwendet werden. Es gibt jedoch mehr Anmerkungen in TestNG, die nicht häufig verwendet werden, wie z @AfterGroups, @BeforeGroups usw., die verwendet werden, wenn Sie mit Gruppen in Ihrem Projekttestskript arbeiten.
Verwenden Sie daher die obigen Anmerkungen gemäß Ihren Anforderungen. Es ist immer ratsam, Ihr Projekt nicht in der Testmethode einzurichten. Schreiben Sie in die Testmethode die Kerngeschäftslogik, die getestet werden soll.
doppelt verknüpftes Listen-C ++ - Beispiel
Stellen Sie sicher, dass Ihr System mit Java 1.5-Versionen oder höher ausgestattet ist. Andernfalls zeigt Eclipse möglicherweise den Fehler an, dass Anmerkungen auf Ihrem System nicht unterstützt werden.
Hoffe, dieser Artikel hilft Ihnen bei TestNG-Anmerkungen. Bitte lassen Sie uns bei Kommentaren oder Fragen wissen.
Literatur-Empfehlungen
- Verwendung des TestNG-Frameworks zum Erstellen von Selenium-Skripten - TestNG Selenium Tutorial # 12
- Selenium Find Element By Text Tutorial mit Beispielen
- 30+ beste Selen-Tutorials: Lernen Sie Selen anhand realer Beispiele
- Cucumber Selenium Tutorial: Integration von Cucumber Java Selenium WebDriver
- Einführung in Selenium WebDriver - Selenium Tutorial # 8
- Effizientes Selenium-Scripting und Fehlerbehebungsszenarien - Selenium-Lernprogramm Nr. 27
- Debuggen von Selenium-Skripten mit Protokollen (Log4j Tutorial) - Selenium Tutorial # 26
- Python DateTime Tutorial mit Beispielen