Wie laufen mehrere test-Klassen in testng suite nur mit einer web-driver-Instanz?
Habe ich testng.xml Datei wie unten...
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="false">
<test name="Test">
<classes>
<class name="com.cigital.myssi.automation.tests.SoftwareTest"/>
<class name="com.cigital.myssi.automation.tests.LoginTest"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
Habe ich die entsprechende test-Klassen wie unten....
SoftwareTest.java
public class SoftwareTest extends Verification {
private WebDriver driver;
private SoftwarePage softwarepage;
private LoginPage loginpage;
private Log log = LogFactory.getLog(SoftwareTest.class);
@BeforeClass(alwaysRun = true)
public void setup() throws InterruptedException {
driver = DriverFactory.getDriverInstance();
softwarepage = new SoftwarePage(driver);
loginpage = new LoginPage(driver);
}
@Test(description="Create Critical Software")
public void CreateCriticalProject()
{
log.info("Create Critical Software test case Started...............");
assertEquals(true, loginpage.gotoSignPage());
assertEquals(true,loginpage.LogintoPortal("[email protected]", "Pass@123", "Welcome"));
assertEquals(true,softwarepage.CreateCriticalSoftware(DataGenerator.RandomNumber("SAMPLE")));
assertEquals(true,loginpage.Logout());
}
@AfterClass(alwaysRun = true)
public void tearDown() {
if (driver != null) {
driver.quit();
}
}
}
LoginTest.java
public class LoginTest extends Verification {
private WebDriver driver;
private LoginPage loginPage;
@BeforeClass(alwaysRun = true)
public void setup() throws InterruptedException {
driver = DriverFactory.getDriverInstance();
loginPage = new LoginPage(driver);
}
@Test(description = "SigninPage")
public void SigninPage() {
assertEquals(true, loginPage.gotoSignPage());
}
@Test(description="Login to Portal",dependsOnMethods="SigninPage",dataProviderClass=CredentialsProvider.class,dataProvider="testCasesLogin")
public void LoginToPortal(UserBean newbean) throws InterruptedException
{
assertEquals(true,loginPage.LogintoPortal(newbean.getUsername(),newbean.getPassword(),newbean.getTitle()));
}
@AfterClass(alwaysRun = true)
public void tearDown() {
if (driver != null) {
driver.quit();
}
}
}
Habe ich initiiert webdrive in beiden Klassen. Das problem ist, wenn der erste test also SoftwareTest ausgeführt wird, dann wird der browser beendet. Aber, ich möchte führen Sie die nächsten test also LoginTest in Ordnung. Kann mir jemand helfen, wie kann ich das erreichen?
Grüße,
- Hallo..können Sie erstellen, die vor und nach der suite zu starten und beenden Sie den browser.. Nur einmal, wenn Sie beabsichtigt ist die gleiche..
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, unter neuen Klasse
}
erweitert diese Klasse alle anderen test-Klassen einige Sache wie unten
hier keine Notwendigkeit der AfterClass ich hoffe und auch in BeforeClass löschen 'driver = DriverFactory.getDriverInstance();'
Lassen Sie mich wissen, wenn Sie irgendwelche Probleme..
Dank
Erstellen Sie eine Treiber-Instanz für beide Klassen in
BeforeClass
- Methode, also erst einmal die Klasse ausgeführt wirdAfterClass
- Methode aufgerufen, und es schließt Ihre Fahrer.Anstatt
BeforeClass
&AfterClass
Methoden, die Sie verwenden könnenBeforeSuite
Methode um browser zu starten und dieAfterSuite
Methode zum beenden des Treibers. Diese lösen würden Ihren Zweck.Diese
BeforeSuite
undAfterSuite
Methode können Sie erstellen, die in den 2 Klassen, die Sie erstellt haben.