Andmepõhise, märksõnade ja hübriidseleeni raamistiku loomine



Selles ajaveebis selgitatakse, mis on seleeniraamistik, selle eeliseid ja seda, kuidas seleenis juurutada andmepõhiseid, märksõnaga juhitavaid ja hübriidseid raamistikke.

Eelmine selles seerias on teile tutvustatud seleeni testimise põhimõisteid.Selles blogis aga ütlen teile, kuidas kasutada Seleeni raamistikku oma koodistruktuuri optimeerimiseks ja see viib teid lähemale, et saada .

Mis on seleeni raamistik?

Seleeniraamistik on koodistruktuur, mis muudab koodi hooldamise lihtsamaks ja koodi loetavamaks. Raamistik hõlmab kogu koodi jaotamist väiksemateks kooditükkideks, mis testivad teatud funktsionaalsust.





Kood on üles ehitatud nii, et „andmekogum” eraldatakse tegelikust „testjuhtumist”, mis testib veebirakenduse funktsionaalsust. Seda saab struktureerida ka nii, et käivitatavaid testjuhtumeid kutsutakse (kutsutakse) välisest rakendusest (näiteks .csv).

Seal on mitu raamistikku, kuid 3 tavaliselt kasutatavat seleeni raamistikku on:



Neid raamistikke arutatakse selle ajaveebi demoga. Kuid enne edasi minekut lubage mul öelda, miks peab olema seleeniraamistik ja milliseid eeliseid saate nende kasutamisest.

Miks me vajame seleeni raamistikku?

Ilma raamistikuta on üks testjuhtum, mis hõlmab kogu testi funktsionaalsust. Õudne on see, et see üksikjuhtum suudab tõusta kuni miljoni koodireani. Seega on üsna ilmne, et nii suurt katseprojekti on raske lugeda. Isegi kui soovite mõnda funktsionaalsust hiljem muuta, on teil koodi muutmine keeruline.

Kuna raamistiku rakendamise tulemuseks on väiksemad, kuid mitu koodijuppi, on sellel mitmeid eeliseid.



Seleeni raamistiku eelised

  • Suurenenud koodi korduvkasutus
  • Parem koodi loetavus
  • Suurem kaasaskantavus
  • Vähendatud skripthooldus

Nüüd, kui teate raamistike põhitõdesid, lubage mul neid kõiki üksikasjalikult selgitada.

Andmepõhine raamistik

Andmepõhine raamistik seleenis on „andmekogumi” eraldamine tegelikust „testjuhtumist” (kood). See raamistik sõltub täielikult sisendkatse andmetest. Testiandmeid edastatakse välistest allikatest, nagu näiteks Exceli fail, .CSV-fail või mis tahes andmebaas.

andmepõhine raamistik - seleeni raamistik - edureka

Kuna testjuhtum on andmekogumist eraldatud, saame konkreetse funktsionaalsuse testjuhtumit hõlpsasti muuta ilma teie koodi hulgimuutmata. Näiteks kui soovite muuta sisselogimisfunktsioonide koodi, saate seda lihtsalt muuta, selle asemel, et peaksite muutma ka muid sama koodi sõltuvaid osi.

Lisaks sellele saate hõlpsalt kontrollida ka seda, kui palju andmeid tuleb testida. Testi parameetrite arvu saate hõlpsasti suurendada, lisades Exceli faili (või muudesse allikatesse) rohkem kasutajanime ja parooli väljad.

Näiteks kui ma pean kontrollima veebilehele sisselogimist, siis saan kasutajanime ja parooli mandaatide komplekti Exceli failis hoida ning volikirjad koodile edastada, et brauseris automatiseerida eraldi Java klassi failis.

Apache POI kasutamine koos seleeni WebDriveriga

WebDriver ei toeta otseselt Exceli failide lugemist. Seega me kasutame Apache HP mis tahes Microsofti kontoridokumentide lugemiseks / kirjutamiseks. Apache POI (JAR-failide komplekt) saate alla laadida siit siin . Laadige alla oma ZIP-fail või tõrvafail vastavalt teie nõudmistele ja asetage need koos seleeni JAR-ide komplektiga.

Peamise koodi ja andmekogumi koordineerimise eest hoolitseb TestNG andmete pakkujad, mis on raamatukogu, mis tuleb Apache POI JAR-failide osana. Demo eesmärgil olen loonud Exceli faili nimega “LoginCredentials”, milles kasutajanimed ja paroolid on salvestatud erinevatesse veergudesse.

mis on kevadel pojo

Proovijuhtumi mõistmiseks vaadake allolevat koodi. See on lihtne kood lennupiletite rakenduse sisselogimisfunktsioonide testimiseks.

pakett DataDriven import org.openqa.selenium.Importimisega org.openqa.selenium.chrome.ChromeDriver import org.testng.Assert import org.testng.annotations.AfterMethod import org.testng.annotations.DataProvider import org.testng.annotations.Test public class DDTExcel {ChromeDriver driver @Test (dataProvider = 'testdata') public void DemoProject (stringi kasutajanimi, stringi parool) viskab InterruptedException {System.setProperty ('webdriver.chrome.driver', 'C: UsersVardhanDownloadschromedriver.exe') draiver = uus ChromeDriver () driver.get ('http://newtours.demoaut.com/') driver.findElement (By.name ('userName')). sendKeys (kasutajanimi) driver.findElement (By.name ('parool') )). sendKeys (parool) driver.findElement (By.name ('sisselogimine')). klõpsake () Thread.sleep (5000) Assert.assertTrue (driver.getTitle (). match ('Find a Flight: Mercury Tours: '),' Vigased mandaadid ') System.out.println (' Sisselogimine õnnestus ')} @AfterMethod void ProgramTermination () {driver.quit ()} @DataProvider (nimi =' testdata ') avalik objekt [] [] TestDa taFeed () {ReadExcelFile config = new ReadExcelFile ('C: UsersVardhanworkspaceSeleniumLoginCredentials.xlsx') int read = config.getRowCount (0) objekt [] [] mandaadid = uus objekt [read] [2] jaoks (int i = 0i

Kui märkate ülevalt, on meil meetod nimega “TestDataFeed ()”. Selle meetodi abil olen loonud teise klassi objektieksemplari nimega “ReadExcelFile”. Selle objekti instantsimise ajal olen sisestanud andmeid sisaldava Exceli faili tee. Olen Exceli töövihikust teksti hankimiseks veel määranud for for loopi.

Antud lehenumbrilt, veerunumbrilt ja reanumbrilt andmete lugemiseks kutsutakse klassi „ReadExcelFile”. Minu „ReadExcelFile” kood on allpool.

pakett DataDriven import java.io.File import java.io.FileInputStream import org.apache.poi.xssf.usermodel.XSSFSheet import org.apache.poi.xssf.usermodel.XSSFWorkbook public class ReadExcelFile {XSSFWorkbook wb XSSFSheetFile public Read excelPath) {proovige {File src = new File (excelPath) FileInputStream fis = new FileInputStream (src) wb = new XSSFWorkbook (fis)} catch (Exception e) {System.out.println (e.getMessage ())}} public String getData (int lehenumber, int rida, int veerg) {sheet = wb.getSheetAt (sheetnumber) Stringi andmed = sheet.getRow (rida) .getCell (veerg) .getStringCellValue () return data} public int getRowCount (int sheetIndex) { int rida = wb.getSheetAt (sheetIndex) .getLastRowNum () rida = rida + 1 tagasirida}}

Kõigepealt pange tähele raamatukogusid, mida olen importinud. Olen importinud Apache POI XSSF teegid, mida kasutatakse andmete lugemiseks / kirjutamiseks failide Exceli jaoks. Siin olen loonud konstruktori (sama meetodi objekt), et edastada väärtused: lehenumber, rea number ja veeru number. Selle raamistiku paremaks mõistmiseks palun teil läbida allolev video, kus olen seda struktureeritult selgitanud.

Andmepõhine raamistik seleeni veebidraiveris Seleeni õpetus

Nüüd liigume raamistiku, st märksõnade juhitud raamistiku juurde.

c c # ja c ++ vahe

Märksõnadepõhine raamistik

Märksõnaga juhitav raamistik on tehnika, milles kõik tehtavad toimingud ja juhised on kirjutatud eraldi tegelikust testjuhtumist. Sarnasus andmepõhise raamistikuga on see, et tehtavad toimingud salvestatakse jällegi välisse faili nagu Exceli leht.

Toimingud, millest ma räägin, pole muud kui meetodid, mis tuleb testjuhtumi osana läbi viia. Märksõnadepõhise raamistiku eeliseks on see, et saate hõlpsalt kontrollida funktsioone, mida soovite testida. Exceli failis saate määrata meetodid, mis rakenduse funktsionaalsust testivad. Seega testitakse ainult neid meetodinimesid, mis on Excelis täpsustatud.

Näiteks veebirakendusse sisselogimiseks võime põhitesti puhul kirjutada mitu meetodit, milles iga testjuhtum testib teatud funktsionaalsust. Brauseri draiveri kiirendamiseks võib olla üks meetod, kasutajanime ja parooli väljade leidmiseks võib olla meetodeid, veebisaidile navigeerimiseks võib olla teine ​​meetod jne.

Raamistiku väljanägemise mõistmiseks vaadake allolevat koodi. Allpool olevas koodis kommenteeritud read on selgituseks, kui te sellest aru ei saa.

pakett KeywordDriven import org.openqa.selenium.chrome.ChromeDriver import org.testng.Assert import org.testng.annotations.Testi import java.util.concurrent.TimeUnit import org.openqa.selenium.Importimisel org.openqa.selenium.WebDriver public class Actions {public static WebDriver draiver public static void openBrowser () {System.setProperty ('webdriver.chrome.driver', 'C: UsersVardhanDownloadschromedriver.exe') draiver = new ChromeDriver ()} public static void navigate () {draiver .manage (). timeouts (). implicitlyWait (10, TimeUnit.SECONDS) driver.get ('http://newtours.demoaut.com')} public static void input_Username () {driver.findElement (By.name (' kasutajanimi ')). sendKeys (' elavhõbe ')} public static void input_Password () {driver.findElement (By.name (' password ')). sendKeys (' mercury ')} public static void click_Login () {driver.findElement (By.name ('sisselogimine')). Klõpsake nuppu ()} @Test public static void verify_login () {String pageTitle = driver.getTitle () Assert.assertEquals (pageTitle, 'Flight: Mercury Tours : ')} avalik staatiline void closeBrowser () {driver.quit ()}}

Nagu näete, on testimiseks vajalikud erinevad funktsioonid olemas eraldi meetodites, mis ootavad kutsumist. Nüüd kutsutakse neid meetodeid teisest klassist, lähtudes meetodi nime olemasolust Exceli failis. Ja samamoodi olen Exceli faili lugemiseks ja tulemuste tagasi saatmiseks kirjutanud teise klassi. Mõlemad on kuvatud allpool.

Klassifail, mis kutsub meetodeid, on see.

pakett KeywordDriven public class DriverScript {public static void main (String [] args) viskab erandi {// Exceli faili tee deklareerimine Exceli faili nimega String sPath = 'C: UsersVardhanworkspaceSelenium Frameworks DemodataEngine.xlsx' // Siin edastame Exceli tee ja SheetName argumentidena ühenduse loomiseks Exceli failiga ReadExcelData.setExcelFile (sPath, 'Sheet1') // Exceli rea ja veergude jaoks kasutatakse praegu kõvakodeeritud väärtusi // Exceli rea jaoks kasutatakse kõvakodeeritud väärtusi & praegu veerud // Hilisemates peatükkides asendame need kõvakodeeritud väärtused varibaalidega // See on silmus veeru 3 (Action Key) väärtuste lugemiseks rea kaupa reale (int iRow = 1iRow<=7iRow++) { String sActions = ReadExcelData.getCellData(iRow, 1) //Comparing the value of Excel cell with all the keywords in the 'Actions' class if(sActions.equals('openBrowser')) { //This will execute if the excel cell value is 'openBrowser' //Action Keyword is called here to perform action Actions.openBrowser() } else if(sActions.equals('navigate')) { Actions.navigate() } else if(sActions.equals('input_Username')) { Actions.input_Username() } else if(sActions.equals('input_Password')) { Actions.input_Password() } else if(sActions.equals('click_Login')) { Actions.click_Login() } else if(sActions.equals('verify_Login')) { Actions.verify_login() } else if(sActions.equals('closeBrowser')) { Actions.closeBrowser() } } } } 

Ja klassifail, mis loeb Exceli väärtusi, on see.

pakett KeywordDriven import java.io.FileInputStream import org.apache.poi.xssf.usermodel.XSSFSheet import org.apache.poi.xssf.usermodel.XSSFWorkbook import org.apache.poi.xssf.usermodel.XSSFCell public class ReadEiccelData {private static XSSFSheet ExcelWSheet private static Erand {FileInputStream ExcelFile = new FileInputStream (Path) ExcelWBook = new XSSFWorkbook (ExcelFile) ExcelWSheet = ExcelWBook.getSheet (SheetName)} // See meetod on ette nähtud testiandmete lugemiseks Exceli lahtrist // Selles edastame parameetreid / argumente kui rea number ja Col Num avalik staatiline string getCellData (int RowNum, int ColNum) viskab erandi {Cell = ExcelWSheet.getRow (RowNum) .getCell (ColNum) String CellData = Cell.getStringCellValue () tagastab CellData}}

Nüüd liigume selle Seleeni raamistiku blogi viimasele osale, kus ma näitan teile, kuidas ehitada hübriidraamistikku.

Hübriidraamistik

Hübriidraamistik on tehnika, mille abil saame kõige paremini ära kasutada nii andmepõhist kui ka märksõnaga juhitud seleeni raamistikku. Kasutades selles blogis ülaltoodud näiteid, saame luua hübriidraamistiku, salvestades käivitamismeetodid Exceli faili (märksõnapõhine lähenemine) ja edastades need meetodinimed Java peegeldusklass (andmepõhine lähenemine) selle asemel, et luua Kui / veel silmus klassis „DriverScript”.

Heitke pilk modifitseeritud “DriverScript” klassile allolevas koodijupis.Siin kasutatakse mitme If / Else-tsükli asemel andmepõhist lähenemist meetodi nimede lugemiseks Exceli failist.

pakett HybridFramework import java.lang.reflect.Method avalik klass DriverScriptJava {// See on klassiobjekt, mis on deklareeritud kui 'public static' // Nii et seda saab kasutada väljaspool peamise [] meetodi reguleerimisala public static Actions actionKeywords public static String sActions // See on peegeldusklassi objekt, mis on deklareeritud kui „avalik staatiline” // Selleks, et seda saaks kasutada väljaspool peamise [] meetodi reguleerimisala public static Method method [] public static void main (String [] args) viskab erandi {// Exceli faili tee deklareerimine Exceli faili nimega String sPath = 'C: UsersVardhanworkspaceSelenium Frameworks DemodataEngine.xlsx' // Siin edastame Exceli faili ja SheetName Exceli failiga ühenduse loomiseks // See meetod loodi varem ReadExcelData.setExcelFile (sPath, 'Sheet1') // Exceli ridade ja veergude jaoks kasutatakse praegu kõvakodeeritud väärtusi // Hiljem kasutame neid kõvakodeeritud väärtusi palju tõhusamalt // See on lugemise silmus veeru (Action Key) rea väärtused rea järgi // See tähendab, et see silmus täidab kõik sammud, mida on testimisjuhiste jaoks kirjeldatud lehel Test Steps (int iRow = 1iRow<=7iRow++) { sActions = ReadExcelData.getCellData(iRow, 1) //A new separate method is created with the name 'execute_Actions' //You will find this method below of the this test //So this statement is doing nothing but calling that piece of code to execute execute_Actions() } } //This method contains the code to perform some action //As it is completely different set of logic, which revolves around the action only, it makes sense to keep it separate from the main driver script //This is to execute test step (Action) private static void execute_Actions() throws Exception { //Here we are instantiating a new object of class 'Actions' actionKeywords = new Actions() //This will load all the methods of the class 'Actions' in it. //It will be like array of method, use the break point here and do the watch method = actionKeywords.getClass().getMethods() //This is a loop which will run for the number of actions in the Action Keyword class //method variable contain all the method and method.length returns the total number of methods for(int i = 0i

Andmepõhise, märksõnaga ja hübriidpõhise raamistiku kontseptsiooni paremaks mõistmiseks palun teil vaadata allolevat videot.

Seleeniraamistik Java abil | Seleeni õpetus | Seleeni koolitus võrgus

Loodan, et see ajaveeb oli teile kasulik ja andis teile selge ülevaate sellest, mis on seleeni raamistik, kuidas see on kasulik ja kuidas nende kolme seleeni raamistiku abil oma koodistruktuuri üles ehitada. Püsige kursis selle sarja muude ajaveebidega.

Kui soovite õppida seleeni ja luua karjääri testimisvaldkonnas, vaadake meie interaktiivset veebipõhist otseülekannet siin on kaasas 24 * 7 tugi, mis juhendab teid kogu õppeperioodi vältel. „Seleeniraamistikuga” seotud mõisted on põhjalikult kajastatud Edureka kursuses.

Kas teil on meile küsimus? Palun mainige seda kommentaaride jaotises ja võtame teiega ühendust.