Bisher hatte ich seitenspezifische Tests geschrieben, die sich nur auf seitenspezifische Szenarien konzentrierten. Beispiel: LoginPageTest.java enthält Tests, die Szenarien nur für die Anmeldeseite testen.So führen Sie die Datei testng.xml aus, die Testklassen mit den gleichen @BeforeClass-Methoden enthält
Jetzt, wo ich ein paar mehr Seiten automatisiert haben, möchte ich all diese Seiten in meinem testng.xml
Problem integrieren ist - Nehmen wir an, ich 3 Testklassen testen wollen (LoginPageTest.java, ExercisePageTest.java & HomePageTest .java) & Ich habe diese Klassennamen in testng.xml
Datei übergeben. Was passiert, wenn ich die testng.xml
Datei laufen lasse, öffnen sich 3 Browser-Instanzen zusammen, weil ich in jeder meiner Test-Klassen eine @BeforeClass
Methode habe, die den Browser initialisiert.
In allen meinen Testklassen ich nach dem gleichen Verfahren wie unten-
- In @BeforeClass
Methode, die ich Browser initialisiert bin.
@BeforeClass
public void setUp() throws Exception {
wte = new ReadWriteExcel();
extent = new ExtentReports("D://myfitnesspal.html", true);
extent.addSystemInfo("Environment", "Test Environment");
test = extent.startTest("Login Functionality");
driver = BrowserSettings.startBrowser("chrome","https://www.myfitnesspal.com");
engineDriver=new EngineDriver(driver);
test.log(LogStatus.PASS, "Executing on Firefox browser");
}
--Im @Test
Methode Ich lese das EMAILID & Passwort des Gastes aus einem Excel-Sheet & in die Anwendung anzumelden.
@Test(priority=0, groups={"regression"})
//@Test(dependsOnMethods="setUp")
public void existingUserLoginfromLandingPage() throws Exception{
new WebDriverWait(driver,10).until(ExpectedConditions.titleContains("Free Calorie Counter, Diet & Exercise Journal"));
test.log(LogStatus.INFO, "Title Detected : " + "Free Calorie Counter, Diet & Exercise Journal");
String emailIDFromExcel = ReadWriteExcel.fecthEmailID(0);
String passwordFromExcel = ReadWriteExcel.fecthPassword(1);
engineDriver.landingPage.existingUserLogin(emailIDFromExcel, passwordFromExcel);
System.out.println("EmailID & Password are :" + emailIDFromExcel+passwordFromExcel);
}
Und ich habe andere @Test
Methoden, die Testseite Szenarien zusammen.
Was ich erreichen möchte ist dies -
Statt dem Browser 3 mal zu öffnen, mag ich den Browser einmal & laufen, sobald die LoginPageTest.java abgeschlossen hat ich die anderen Testklassen ohne die Notwendigkeit ausgeführt werden soll einer neuen Browser-Instanz eröffnet & ohne einen neuen Benutzer wird angemeldet
. Beispiel: ich meine testng.xml
Datei this- wie
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
<test name="Test">
<parameter name="typeOfCardio" value="Swimming" />
<parameter name="typeOfStrengthExercise" value="Bench Press" />
<classes>
<class name="com.myfitnesspal.tests.LoginPageTest"/>
<class name="com.myfitnesspal.tests.ExercisePageTest"/>
<class name="com.myfitnesspal.tests.HomePageTest" />
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
Verwendung '@ BeforeTest' den Vermerk statt' @ BeforeClass' – NarendraR