skapa automatiserade tester med TestNG

1 Inledning

automatiserade tester kan skapas med olika verktyg, beroende på typ av tester. Integrationstester kan skapas med SoapUI, enhetstester med Enhetstestmodulen och UI-tester med Selenium IDE. Med Selenium IDE kan du skapa skript för att hjälpa till med automatiseringsstödd utforskande testning. Om du vill skapa robusta, webbläsarbaserade tester bör du titta på att använda ett testramverk med Selenium.

TestNG är ett Java-testramverk som kan användas för att driva selen. I denna how – to lär du dig att skapa ett automatiserat test med TestNG.

denna how – to kommer att lära dig hur du gör följande:

  • skapa TestNG testfiler
  • kör automatiserade tester med TestNG
  • generera rapporter med TestNG

2 förkunskapskrav

innan du börjar med denna instruktion, se till att du har slutfört följande förutsättningar:

  • ladda ner och installera Eclipse
  • ladda ner Selenium-klienten & WebDriver för Java

den här metoden använder mallen för företagsutgifter som börjar i avsnittet Lägg till den tredje testmetoden för ett exempelscenario. Denna appmall är dock inte längre plattformsstödd av Mendix. Därför kan sektioner som använder denna appmall endast användas som referens och inte som sektioner som kan slutföras steg för steg.

3 Skapa ett Java-projekt

i det här kapitlet installerar du TestNG-plugin-modulen och skapar ett Java-projekt i Eclipse inklusive TestNG – och Selenium-biblioteken:

  1. öppna Eclipse.
  2. följ instruktionerna i Eclipse plug-in > Installera från update site avsnitt I nedladdning TestNG.
  3. starta om Eclipse för att ändringarna ska träda i kraft.
  4. Välj Arkiv > Nytt > Java-Projekt.
  5. ange MyFirstTestNGProject för projektnamnet och klicka på Nästa.
  6. välj fliken Bibliotek och klicka på Lägg till bibliotek.
  7. Välj TestNG och klicka på Nästa.
  8. klicka på Slutför för att ställa in standard TestNG-biblioteket till det här projektet.
  9. klicka på Lägg till externa burkar… och navigera till var du sparade Selenium JAR-filerna.
  10. Lägg till alla JAR-filer i selenium-och libs-mapparna:

  11. klicka på Slutför för att skapa Java-projektet. MyFirstTestNGProject kommer att visas i paketet Explorer:

du är nu klar med att ställa in ditt projekt!

4 Skapa en TestNG-fil

för att skapa en ny TestNG-fil, följ dessa steg:

  1. högerklicka på src-mappen och välj Ny > Övrigt…:
  2. Välj TestNG klass och klicka sedan på Nästa:

  3. klicka på Bläddra… för att välja en källmapp, välj MyFirstTestNGProject > src och klicka på OK.

  4. ange följande information:

    • Paketnamn: myfirsttestngpackage
    • klassnamn: MyFirstTestNGFile
    • @BeforeTest: true
    • @AfterTest: sant

  5. klicka på Slutför. Mallen för din första TestNG-fil skapas automatiskt:

    anteckningen @Test används för att ange att metoden under den är ett testfall. I detta fall är metoden f ett testfall. @BeforeTest – anteckningen används för att ange att metoden under den kommer att utföras före det första testfallet. Anteckningen @AfterTest används för att ange att metoden under den kommer att utföras efter det sista testfallet.

5 skapa ett testfall

Låt oss nu koda ditt testfall.

5.1 Lägg till en WebDriver

för att skapa en variabel som ska användas för WebDriver, följ dessa steg:

  1. Sök efter följande:

    public class MyFirstTestNGFile {
  2. Lägg till koden nedan på nästa rad. Detta skapar en driver variabel av typen WebDriver:

    public WebDriver driver;
  3. tryck Ctrl + Skift + O för att organisera importen. Detta importerar de saknade uttalandena och tar bort de oanvända importdeklarationerna. Följande uttalande kommer att importeras:

    import org.openqa.selenium.WebDriver;

5.2 Lägg till en Företestmetod

anteckningen @BeforeTest används för att ange att metoden under den kommer att utföras före det första testfallet. Innan det första testfallet öppnar du Firefox-webbläsaren genom att följa dessa steg:

  1. ändra följande kod:

    @BeforeTestpublic void beforeTest() {}

    in:

    @BeforeTestpublic void beforeTest() { driver = new FirefoxDriver();}

    detta skapar en ny instans av Firefox-drivrutinen och öppnar Firefox-webbläsaren.

  2. tryck CTRL + Skift + O. följande uttalande kommer att importeras:

    import org.openqa.selenium.firefox.FirefoxDriver;

5.3 Lägg till en Eftertestmetod

anteckningen @AfterTest används för att ange att metoden under den kommer att köras efter det senaste testfallet. Efter det sista testfallet stänger du webbläsaren genom att ändra följande kod:

@AfterTestpublic void afterTest() {}

in:

@AfterTestpublic void afterTest() {driver.close();}

detta stänger Firefox-webbläsaren.

5.4 Lägg till den första testmetoden

för att lägga till den första testmetoden, öppna en webbadress i webbläsaren och ändra sedan följande kod:

@Testpublic void f() {}

in:

@Test(priority=1)public void openApp() {driver.get("http://localhost:8080/index.html");}

denna testmetod Öppnar webbadressen http://localhost:8080/index.html i Firefox-webbläsaren. Som standard utförs metoderna som kommenteras av @Test alfabetiskt. Du kan använda parametrar för att ändra annotationens funktion. Parametern priority kan användas för att utföra metoderna i en annan ordning. TestNG kommer att utföra @Test – anteckningen med det lägsta prioritetsvärdet upp till det största.

5.5 Lägg till den andra testmetoden

nu när du är i inloggningsfönstret vill du logga in. Följ dessa steg för att lägga till den andra testmetoden:

  1. öppna Firefox och gå till http://localhost:8080/index.html.
  2. använd utvecklarverktygen för att inspektera elementet.
  3. klicka på inmatningsfältet användarnamn. ID för detta fält är usernameInput. CSS-väljaren för ett ID är en hashtag (#) + namnet på ID. För fältet Användarnamn kommer detta att vara #usernameInput. Samma princip används för de andra stegen. CSS-väljaren #usernameInput är unik. Det finns en matchande nod:

  4. Upprepa steg 5-6 för inmatningsfältet för lösenord och knappen Logga in:

    Element CSS-väljare
    inmatningsfält för lösenord #passwordInput
    logga in-knapp #loginButton
  5. Lägg till en ny testmetod som heter login. Använd följande kod:

    @Test(priority=2)public void login() { driver.findElement(By.cssSelector("#usernameInput")).sendKeys("MxAdmin"); driver.findElement(By.cssSelector("#passwordInput")).sendKeys("1"); driver.findElement(By.cssSelector("#loginButton")).click();}

denna testmetod innehåller följande teststeg:

  1. ange MxAdmin som användarnamn.
  2. ange 1 som lösenord.
  3. klicka på knappen Logga in.

5.6 Lägg till den tredje testmetoden

för att lägga till den tredje testmetoden, följ dessa steg:

  1. öppna din app och i App Explorer öppnar du ProgramDetail-sidan.
  2. välj fliken Utgifter:

    namnet på fliken Utgifter är tabPage4. Varje element får automatiskt CSS-klassen mx-name-, så fliken Utgifter får CSS-klassen mx-name-tabPage4 när appen körs.

  3. tillbaka till Eclipse.

  4. Lägg till en ny testmetod som heter openExpensesTab. Använd följande kod:

    @Test(priority=3)public void openExpensesTab() { WebDriverWait wait = new WebDriverWait(driver, 10); wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(".mx-name-tabPage4"))).click();}

    denna testmetod anropar ExpectedCondition var 500 millisekunder tills den antingen återgår framgångsrikt eller 10 sekunder har gått. När 10 sekunder har gått och elementet inte finns, kommer en TimeoutException att kastas. Om elementet ligger inom 10 sekunder klickar metoden på elementet med klassnamn mx-name-tabPage4. Klassen på fliken Utgifter är mx-name-tabPage4. CSS-väljaren för en klass är en punkt (.) + klassnamnet, så för fliken Utgifter blir det .mx-name-tabPage4.

5.7 Lägg till den fjärde testmetoden

nu när du är på fliken Utgifter vill du skapa en ny kostnad. Följ dessa steg för att lägga till den fjärde testmetoden:

  1. öppna Studio Pro och öppna sedan Desktop_AdminMenu-sidan.
  2. Välj knappen Ny kostnad:

    namnet på den nya Expense-knappen är newButton3 , så knappen kommer att ha mx-name-newButton3 CSS-klassen:

  3. öppna sidan Desktop_Expense_NewEdit_Admin.

  4. hitta namnen på följande element (som du gjorde i steg 3):

    Element namn
    belopp fält textBox6
    beskrivning dropdown referenceSelector1
    Spara knapp saveButton1
    The name of an element in your app may be different than the name shown in the Name column. In step 7, use the name of the element of your app.
  5. tillbaka till Eclipse.

  6. Lägg till en ny testmetod som heter createExpense. Använd följande kod:

    @Test(priority=4)public void createExpense() { driver.findElement(By.cssSelector(".mx-name-newButton3")).click(); driver.findElement(By.cssSelector(".mx-window-active .mx-name-textBox6 input")).clear(); driver.findElement(By.cssSelector(".mx-window-active .mx-name-textBox6 input")).sendKeys("15.00"); driver.findElement(By.cssSelector(".mx-window-active .mx-name-referenceSelector1 option:nth-child(2)")).click(); driver.findElement(By.cssSelector(".mx-window-active .mx-name-saveButton1")).click();}

    denna testmetod innehåller följande teststeg:

    1. klicka på ny kostnad.
    2. avmarkera fältet Belopp.
    3. ange 15.00 i fältet Belopp.
    4. Välj det andra alternativet i rullgardinsmenyn beskrivning.
    5. Klicka På Spara.

    ett popup-fönster visas efter att du klickat på ny kostnad (.mx-name-newButton3). För att vara säker på att elementet på den aktiva sidan hämtas (vilket i detta fall är popup-fönstret) måste du lägga till .mx-window-active till CSS-väljaren för elementen i popup-fönstret.

    för varje inmatningsfält måste du lägga till input i slutet av CSS-väljaren.

    standardvärdet för fältet Belopp är 0,00. För att ange ett nytt värde måste du först rensa fältet.

    referensväljaren har sex alternativ; Tom, boende, måltid, annat, leveranser, Transport. För att välja boende (det andra alternativet) måste du lägga till option:nth-child(2) i slutet av CSS-väljaren.

5.8 Lägg till den femte testmetoden

när du har skapat en kostnad vill du logga ut. För att lägga till den femte testmetoden, följ dessa steg:

  1. öppna Studio Pro och öppna sedan Desktop_MyInfo-utdraget.
  2. hitta namnet på följande element:

    Element namn
    logga ut knapp signOutButton1
  3. Lägg till en ny testmetod som heter signOut. Använd följande kod:

    @Test(priority=5)public void signOut() { driver.findElement(By.cssSelector(".mx-name-signOutButton1")).click();}

    denna testmetod klickar på elementet med klassnamnet mx-name-signOutButton1.

6 kör testet

du är nu redo att köra testet. Följ dessa steg för att köra testet:

  1. högerklicka på mappen MyFirstTestNGProject.
  2. välj Kör som > TestNG Test:

    resultaten av testet visas i konsolfönstret och i TestNG-resultatfönstret:

7 testrapport

TestNG genererar rapporter i HTML-format. För att testa rapporten, följ dessa steg:

  1. högerklicka på mappen MyFirstTestNGProject och välj Uppdatera. En test-output mapp kommer att skapas:

  2. öppna mappen test-output.

  3. högerklicka på indexet.html-fil.

  4. välj Öppna med > webbläsare. Rapporten kommer att se ut så här:

  5. klick (Visa). Testmetoderna visas alfabetiskt:

  6. klicka på den kronologiska vyn. En översikt med metoderna i kronologisk ordning visas:

8 skapa en testsvit

när du kör ditt test som du gjorde i kör testet skapas en testsvit automatiskt. Denna testsvit innehåller alla testNG-filer som finns i projektet. Men vad händer om du bara vill köra specifika tester? Än du behöver skapa en testsvit själv.

  1. högerklicka på src-mappen och välj Ny > Övrigt.
  2. öppna XML-mappen och välj XML-fil:

  3. klicka på Nästa.

  4. ändra filnamnet till MyFirstTestSuite.xml.

  5. klicka på Slutför för att skapa XML-filen:

  6. klicka på fliken Källa:

  7. ändra följande kod:

    <?xml version="1.0" encoding="UTF-8"?>

    till

    <?xml version="1.0" encoding="UTF-8"?><suite name="MyFirstTestSuite"> <test name="Test1"> <classes> <class name="myfirsttestngpackage.MyFirstTestNGFile" /> </classes> </test></suite>

    detta skapar den nya testsviten MyFirstTestSuite. Testpaketet innehåller ett test: Test1. Testet innehåller en testNG-fil, myfirsttestngpackage.MyFirstTestNGFile.

  8. högerklicka på MyFirstTestSuite.xml-fil och välj Kör som > 1 TestNG Suite.

bra gjort! Du skapade din första TestNG Suite!

9 Kör din testsvit på flera webbläsare med @parametrar

testet du skapade körs nu bara på Firefox. Om du vill se till att funktionaliteten fungerar som förväntat i andra webbläsare måste du utföra testning med flera webbläsare. Med TestNG är det mycket enkelt att utföra samma test på olika webbläsare.

  1. ladda ner ChromeDriver här: https://sites.google.com/a/chromium.org/chromedriver/downloads.
  2. ladda ner IEDriver här: http://selenium-release.storage.googleapis.com/index.html.
  3. i Eclipse, öppna MyFirstTestNGFile och ändra följande kod:

    @BeforeTestpublic void beforeTest() { driver = new FirefoxDriver();}

    in:

    @Parameters("browser")@BeforeTestpublic void beforeTest(String browser) { if(browser.equalsIgnoreCase("chrome")){ System.setProperty("webdriver.chrome.driver", "C://Selenium/chromedriver.exe"); driver = new ChromeDriver(); } else if(browser.equalsIgnoreCase("ie")){ System.setProperty("webdriver.ie.driver", "C://Selenium/IEDriverServer.exe"); driver = new InternetExplorerDriver(); } else{ driver = new FirefoxDriver(); }}

    @Parameters används för att infoga en parameter (i detta fall browser) från testsviten XML. Om webbläsarparametern är chrome startar en Chrome-drivrutin.

    i detta avsnitt, chromedriver.exe lagras i C://Selenium mapp. Var noga med att använda rätt väg i den här koden.

  4. tryck Ctrl + Skift + O, och följande uttalanden kommer att importeras:

    import org.openqa.selenium.chrome.ChromeDriver;import org.openqa.selenium.ie.InternetExplorerDriver;import org.testng.annotations.Parameters;
  5. öppna MyFirstTestSuite och ändra följande kod

    <?xml version="1.0" encoding="UTF-8"?><suite name="MyFirstTestSuite"> <test name="Test1"> <classes> <class name="myfirsttestngpackage.MyFirstTestNGFile" /> </classes> </test></suite>

    till:

    <?xml version="1.0" encoding="UTF-8"?><suite name="MyFirstTestSuite"> <test name="ChromeTest"> <parameter name="browser" value="chrome" /> <classes> <class name="myfirsttestngpackage.MyFirstTestNGFile" /> </classes> </test> <test name="IETest"> <parameter name="browser" value="ie" /> <classes> <class name="myfirsttestngpackage.MyFirstTestNGFile" /> </classes> </test> <test name="FirefoxTest"> <parameter name="browser" value="firefox" /> <classes> <class name="myfirsttestngpackage.MyFirstTestNGFile" /> </classes> </test></suite>

    det första testet (kallat ChromeTest) har webbläsarparametern chrome. Denna parameter kommer att användas i metoden @BeforeTest i MyFirstTestNGFile.

  6. högerklicka på MyFirstTestSuite.xml-fil och välj Kör som > TestNG Suite:

bra gjort! Du skapade din första automatiserade cross-browser test med TestNG!

nu vet du hur man skapar en TestNG-testfil, hur man skapar en testsvit och hur man kör det automatiska testet i flera webbläsare.

Glad testning!

10 Läs Mer

  • testa Mendix-applikationer med Selenium IDE
  • testa Mikroflöden med enhetens testmodul

Lämna ett svar

Lämna ett svar

Din e-postadress kommer inte publiceras.