В чем разница между созданием отчета по экстенту с использованием слушателя и без использования слушателя - PullRequest
0 голосов
/ 15 ноября 2018

Я хочу создать отчет по экстентам, но меня не устраивает различие между созданием отчета по экстентам с использованием прослушивателя и без использования прослушивателя?

Я закончил написание кода для обоих, но не могуувидеть разницу и какой из них лучше, потому что он выглядит так же, и результат результат также то же самое.Может кто-нибудь объяснить мне, какой из них лучше?Ниже прилагается мой пример кода, когда я удаляю слушателя, все еще может получить тот же результат:

Listener.java

package listener;
public class Listener implements ITestListener {
ExtentTest test;
public void onTestStart(ITestResult result) {
    System.out.println("on test start");

}
public void onTestSuccess(ITestResult result) {
    System.out.println("on test success");
}
public void onTestFailure(ITestResult result) {
    System.out.println("on test failure");
    result.getThrowable();
}
public void onTestSkipped(ITestResult result) {
    System.out.println("on test skipped");
    result.getThrowable();
}
public void onTestFailedButWithinSuccessPercentage(ITestResult result) {
    System.out.println("on test sucess within percentage");
}
public void onStart(ITestContext context) {
    System.out.println("on start");

}
public void onFinish(ITestContext context) {
    System.out.println("on finish");
} }

BaseTest.java

public class BaseTest {
public AppiumDriver<WebElement> driver;
ExtentReports extent;
ExtentTest test;

String timeStamp = new SimpleDateFormat("EEE-d-MMM-yyyy.HH-mm-ss ").format(new Date());
String fileName = System.getProperty("user.dir") + "/result/report" + timeStamp + ".html";
ExtentHtmlReporter htmlReports;
@Parameters("deviceModel")
@BeforeTest
public void setUp() throws MalformedURLException {
    htmlReports = new ExtentHtmlReporter(fileName);
    extent = new ExtentReports();
    extent.attachReporter(htmlReports);
    htmlReports.config().setReportName("Testing");
    htmlReports.config().setTheme(Theme.STANDARD);
    htmlReports.config().setTestViewChartLocation(ChartLocation.BOTTOM);
    htmlReports.config().setDocumentTitle("HtmlResultTest");

    System.out.println("Session is creating");
    DesiredCapabilities capabilities = new DesiredCapabilities();
    capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "ios");
    capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, "10.3.3");
    capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Agmo");
    capabilities.setCapability(MobileCapabilityType.BROWSER_NAME, "Safari");
    driver = new IOSDriver<WebElement>(new URL("http://localhost:4723/wd/hub"), capabilities);
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
    System.out.println("Session is created");
}

@AfterTest
public void tearDown() {
    extent.flush();
}

@AfterMethod
public void checkResults(ITestResult testResult){
    if (testResult.getStatus()==ITestResult.FAILURE){
        test.log(Status.FAIL, "Test case is failed because of below problem");
        test.log(Status.FAIL, testResult.getThrowable());
    }else if (testResult.getStatus()==ITestResult.SUCCESS){
        test.log(Status.PASS, "Test case is passed");
    }else if (testResult.getStatus()==ITestResult.SKIP){
        test.log(Status.SKIP, testResult.getThrowable());
    }
} }

Testing.java

public class Testing extends BaseTest {
@Test(priority = 0)
public void InvalidVerificationCode() {
    test = extent.createTest("Invalid code");
    System.out.println("Starting test " + new Object() {}.getClass().getEnclosingMethod().getName());
    driver.get("https://r2c2-staging.azurewebsites.net");
    try {
        driver.findElement(By.xpath("//button[@class=\"btn btn-white-green\" and @type=\"button\"]")).click();
        driver.findElement(By.xpath("//input[@class=\"ng-untouched ng-pristine ng-invalid\" and @type=\"text\"]")).sendKeys("sarinadia+2@agmostudio.com");
        driver.findElement(By.xpath("//input[@class=\"ng-untouched ng-pristine ng-invalid\" and @type=\"password\"]")).sendKeys("12345");
        driver.findElement(By.xpath("//button[@class=\"signInBtn\" and @type=\"submit\"]")).click();
    }catch (Exception e){
        driver.findElement(By.xpath("//div[@class=\"title\"]")).click();
    }
    driver.findElement(By.xpath("//img[@class=\"ng-star-inserted\"]")).click();
    driver.findElement(By.xpath("//div[@class=\"logout\"]")).click();
    driver.findElement(By.xpath("//button[@class=\"btn btn-white-green\" and @type=\"button\"]")).click();
    driver.findElement(By.xpath("//input[@class=\"ng-untouched ng-pristine ng-invalid\" and @type=\"text\"]")).sendKeys("sarinadia+2@agmostudio.com");
    driver.findElement(By.xpath("//input[@class=\"ng-untouched ng-pristine ng-invalid\" and @type=\"password\"]")).sendKeys("12345");
    driver.findElement(By.xpath("//button[@class=\"signInBtn\" and @type=\"submit\"]")).click();
    try{
        driver.findElement(By.xpath("//div[@class=\"logout\" and @text=\"Logout\"]"));
    }catch (Exception e){
        String actual_error = driver.findElement(By.xpath("//div[@class=\"modal-content\"]")).getText();
        Assert.assertTrue(actual_error.contains("The user name or password provided is incorrect"));
        driver.findElement(By.xpath("//button[@class=\"btn btn-primary ok\" and @type=\"button\"]")).click();
        System.out.println("Tess login with invalid verification code pass!!\n");
    }
}

File.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="tests">
<listeners>
    <listener class-name="Listener"/>
</listeners>
<test name="Test ios">
    <parameter name="deviceModel" value="Agmo" />
    <classes>
        <class name="Testing">
            <methods>
                <include name="InvalidVerificationCode"/>
            </methods>
        </class>
    </classes>
</test>
</suite>

1 Ответ

0 голосов
/ 16 ноября 2018

Без разницы, всего 2 способа создания отчета.

Хотя, глядя на код, ваше использование Listener ничего не изменит, поскольку это просто запись в консоль. Отчет генерируется только из BaseTest.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...