learn how use testng annotations selenium
TestNG, som de flesta av er vet, är en automatisering ram används ofta i selen . Det är viktigt för alla testare att förstå anteckningarna som används när de arbetar med TestNG.
För att uttrycka det enkelt är TestNG-anteckningar kodrader som infogas i programmet / affärslogiken för att kontrollera hur metoderna nedan ska köras.
I den här artikeln ska jag fokusera på vikten av olika typer av anteckningar och deras användning.
Nedan har jag delat inställningarna som används för mitt projekt. Detta behöver inte nödvändigtvis följas för ditt projekt.
Anteckningarna varierar beroende på dina projektkrav. Flödet av exekvering kommer dock att vara detsamma.
Förutsättningar:
- Installera TestNG i Eclipse. Kolla upp denna handledning om installationsguiden .
- JDK - Java-utvecklingssats
- Kommentarer kan endast användas med Java 1.5-version eller senare
Innan vi skriver testskript eller ställer in ett projekt bör vi känna till den hierarki där anteckningarna fungerar. Körningen kommer alltid att vara densamma.
Till exempel, kompilera och kör nedanstående skript och märk körningsordern. Det kommer att vara som följer:
- BeforeSuite
- Före test
- Innan lektionen
- BeforeMethod
- Testfall 1
- Eftermetod
- BeforeMethod
- Testfall 2
- Eftermetod
- Efter lektionen
- AfterTest
- AfterSuite
Exempel:
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'); } }
Vi kan bryta testskriptet i följande steg:
- Skriv affärslogiken för ditt test och infoga ovan TestNG-anteckningar i din kod
- Lägg till informationen om ditt test (t.ex. klassnamnet, grupperna, metoderna du vill köra, etc.) i a testng.xml fil.
- Kör TestNG
Men frågan kvarstår - vilken information ska vi tillhandahålla i ovanstående kommentarer?
Ta en titt på de viktiga stegen vi kan uppnå med ovanstående kommentarer:
# 1) @Testa
Detta är huvuddelen av vårt automatiseringsskript där vi kommer att skriva affärslogiken, de saker som vi vill automatisera. Vi kan skicka attribut till vår testmetod.
Nedan följer listorna över attribut som vi kan överföra till vår testmetod:
- kör alltid : Detta används när vi vill se till att en metod alltid körs även om parametrarna som metoden beror på misslyckas. Om den är inställd på sant kommer den här testmetoden alltid att köras. T.ex: @Test (alltidRun = sant)
- dataProvider : TestNG dataProvider används för att tillhandahålla alla data för parametrering. T.ex. @Test (dataProvider = “Hej”).
- dataProviderClass : Det här är klassen från vilken vi skickar data till dataleverantören. I vårt fall är dataProvider-klassnamnet “Hello”.
- beror på grupper : Det är listan över grupper som denna metod beror på. T.ex: @Test (grupper = {“City”, ”State”})
- dependsOnMethods: Detta kommando används för att utföra en metod baserat på dess beroende metod. T.ex: @Test (dependsOnMethods = {“OpenBrowser”, ”databasen är uppe”})
- beskrivning : Det är beskrivningen för metoden. T.ex: @Test (beskrivning = “testmetod”)
- invocationCount : Det refererar till hur många gånger en metod ska åberopas. Det fungerar som en slinga. T.ex: @Test (invocationCount = 7) . Därför kommer denna metod att köras 7 gånger.
- invocationTimeOut : Detta refererar till det maximala antalet millisekunder som en metod ska ta för att alla invocationCount ska slutföra. Detta attribut ignoreras om invocationCount inte anges. T.ex: @Test (invocationCount = 7, invocationTimeOut = 30)
- prioritet : Detta kommando ställer in testmetodens prioritet. Lägre prioriteringar planeras först. T.ex: @Test (prioritet = 1)
#två)@BeforeSuite och @AfterSuite
I @BeforeSuite kommenterad metod kan du ställa in och starta selen förare och in @AfterSuite antecknad metod kan du stoppa Selen-drivrutiner
Exempel :
public class TestSuiteSetup () { @BeforeSuite(alwaysRun = true) public void setupSuite() { WebDriver driver = new FirefoxDriver(); } @AfterSuite(alwaysRun = true) public void tearDown() { driver().close(); } }
# 3)@BeforeClass och @AfterClass
I @Innan lektionen kommenterad metod kan du ställa in dina Firefox-egenskaper, initiera drivrutinen och så vidare och in @Efter lektionen kommenterad metod kan du stoppa drivrutinen
Exempel :
@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 och @AfterMethod
I @BeforeMethod antecknad metod kan du kontrollera databasanslutningen innan du kör testmetoden och in @AfterMethod kommenterad metod kan du stänga din databasanslutning
Exempel :
@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 och @AfterTest
I @BeforTest metod kan du ställa in dina Firefox-profilinställningar och in @AfterTest metod kan du lägga in en kod som genererar testresultatet och skickar den till intressenterna
Exempel :
@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 }
Den viktigaste aspekten som bör noteras här när du arbetar med anteckningar är att ditt system ska vara utrustat med Java 1.5-version eller högre, annars kan Eclipse visa ett fel att anteckningar inte stöds på ditt system.
Tänk nu på ett fall där ditt system har rätt Java-version som behövs för anteckningar men felet fortfarande visas.
Något som nedan:
Syntaxfel, anteckningar är endast tillgängliga om källnivån är 1,5 eller högre.
Vad ska du göra nu? Det finns tre alternativ för att åtgärda denna situation.
Låt oss gå igenom det en efter en:
Alternativ 1:
- Gå till Eclipse och högerklicka på ditt projekt
- Välj Egenskaper
- Klicka på Java Compiler
- Se till att din Compiler-efterlevnadsnivå är 1,5 eller högre
- Spara inställningarna så löses ditt problem
Alternativ 2:
- Gå till Fönsterflik i Eclipse
- Välj Inställningar
- Klicka på Java och sedan på Compiler
- Se till att din Compiler-efterlevnadsnivå är 1,5 eller högre
- Spara inställningarna så löses ditt problem
Alternativ # 3:
Kontrollera din Java-hemväg genom att ställa in rätt variabel för Java-miljövägen.
Slutsats:
Genom den här artikeln försökte vi diskutera några av de viktiga anteckningar och attribut som ofta används av testare. Det finns dock fler kommentarer i TestNG som inte används ofta, t.ex. @AfterGroups, @BeforeGroups och så vidare som används när du arbetar med grupper i ditt projekttestskript.
Så använd ovanstående kommentarer enligt dina krav. Det är alltid tillrådligt att inte göra din projektinställning i testmetod. I testmetod skriver du kärnverksamhetslogiken som ska testas.
skillnad mellan c- och c ++ -kod
Se till att ditt system är utrustat med Java 1.5-versioner eller senare, annars kan Eclipse visa ett fel att kommentarer inte stöds på ditt system.
Hoppas den här artikeln hjälper dig med TestNG-anteckningar. Meddela oss gärna vid kommentarer eller frågor.
Rekommenderad läsning
- Hur man använder TestNG Framework för att skapa Selen-skript - TestNG Selen Tutorial # 12
- Selen Find Element by Text Tutorial med exempel
- 30+ bästa selen-självstudier: Lär dig selen med riktiga exempel
- Gurka Selen Tutorial: Gurka Java Selen WebDriver Integration
- Introduktion till Selen WebDriver - Selen Tutorial # 8
- Effektiv skriptning av selen och felsökning av scenarier - Selen-handledning # 27
- Felsökning av selenskript med loggar (Log4j-handledning) - Selen-handledning # 26
- Python DateTime-handledning med exempel