Wenn ich versuche, Testklassen parallel auszuführen, erscheinen Protokolle von zwei Testklassen in einem.Extent Reports: Protokolle werden zusammengeführt, wenn Testfälle parallel ausgeführt werden
Das ist mein testng.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="methods">
<test name="Test">
<classes>
<class name="com.moodle.automation.tests.Professor"/>
<class name="com.moodle.automation.tests.Students"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
Es startet zwei Browser, beide laufen separate Tests, nur 1 Berichte erzeugt (wie erwartet), aber Bericht zeigt fusionierten Protokolle also test.log(Status.INFO, browser + " launched ...");
sowohl für die Tests wie folgt aus:
Status Timestamp Details
info_outline 10:15:54 PM Chrome launched ...
info_outline 10:15:54 PM Chrome launched ...
info_outline 10:16:01 PM Navigated to appURL...
info_outline 10:16:02 PM Navigated to appURL...
info_outline 10:16:05 PM Professor logged in ...
info_outline 10:16:08 PM Student logged in ...
Was könnte ich möglicherweise falsch machen? Ich folgte diesem Tutorial https://www.youtube.com/watch?v=QQAmcnGbVQM
Edit: Test-Klasse 1 ist die gleiche wie Klasse 2 Class1:
@Test()
public void test1() {
extentTest = extentReports.createTest("Test1");
extentTest.log(Status.INFO, "Test1 started ...");
Assert.assertTrue(1>1);
}
@Test()
public void test2() {
extentTest = extentReports.createTest("Test2");
extentTest.log(Status.INFO, "Test2 started ...");
Assert.assertTrue(1>1);
}
@Test()
public void test3() {
extentTest = extentReports.createTest("Test3");
extentTest.log(Status.INFO, "Test3 started ...");
Assert.assertTrue(1<0);
}
Baseclass:
@AfterSuite
public void afterSuite() {
// extentReports.flush();
String finalReport = System.getProperty("user.dir") + "/Reporting/reports/report_" + timeStamp + ".html";
File htmlFile = new File(finalReport);
try {
Desktop.getDesktop().browse(htmlFile.toURI());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@AfterMethod
public void getResult(ITestResult result) {
if(result.getStatus() == ITestResult.FAILURE){
extentTest.fail(MarkupHelper.createLabel(result.getName()+" Test case failed", ExtentColor.RED));
extentTest.fail(result.getThrowable());
}
else if(result.getStatus() == ITestResult.SUCCESS){
extentTest.pass(MarkupHelper.createLabel(result.getName()+" Test case passed", ExtentColor.GREEN));
}
else {
extentTest.skip(MarkupHelper.createLabel(result.getName()+" Test case skipped", ExtentColor.YELLOW));
extentTest.skip(result.getThrowable());
}
}
@AfterTest
public void flushTestReports(){
extentReports.flush();
}
zu reproduzieren es zwei gleiche Browsern parallel zu.
Bitte geben Sie Ihren Code ein. – Anshoo
@Anshoo jedes Update dazu? – paul
Scheint so, als würden Ihre Tests von einander überschrieben, so dass Protokolle geteilt werden. Können Sie so etwas verwenden, um Ihre Tests zu verwalten: https://github.com/anshooarora/extentreports-java/blob/master/src/test/java/com/aventstack/extentreports/common/ExtentTestManager.java – Anshoo