如何使用selenium中的范围报告来区分通过和失败

时间:2017-05-17 10:12:51

标签: selenium selenium-webdriver testng

我有两种测试方法,我编写了一些代码来验证链接的标题。在一种方法中,我故意传递了一种方法而另一种方法失败但在报告中它只在饼图中给出了传递状态。如何跟踪失败的一个?
以下是我的代码:

    package com.custom.reports;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.ITestResult;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.AfterSuite;
import org.testng.annotations.Test;

import com.relevantcodes.extentreports.ExtentReports;
import com.relevantcodes.extentreports.LogStatus;

public class CustomReports {
    WebDriver driver;
    ExtentReports logger;

    @Test(priority = 1)
    public void verifyTitle() {

        System.setProperty("webdriver.firefox.marionette", "C:\\geckodriver.exe");
        logger = ExtentReports.get(CustomReports.class);
        logger.init("C:\\Users\\siddhesh.kalgaonkar\\Documents\\Reports\\SecondReport.html", true);
        logger.startTest("Verify Title Test");
        driver = new FirefoxDriver();
        driver.manage().window().maximize();
        logger.log(LogStatus.INFO, "Browser is up and running..");
        driver.get("http://google.com");
        logger.log(LogStatus.INFO, "Application is up and running..");
        String title = driver.getTitle();
        Assert.assertTrue(title.contains("Google"));
        logger.log(LogStatus.INFO, "Title is verified..");
        logger.endTest();

    }

    @Test(priority = 2)
    public void verifyTitle2() {
        String title1 = driver.getTitle();
        Assert.assertTrue(title1.contains("Selenium"));
        logger.log(LogStatus.INFO, "Title is verified..");
        logger.endTest();
    }

    @AfterSuite
    public void afterFailed() { 
        driver.get("C:\\Users\\siddhesh.kalgaonkar\\Documents\\Reports\\SecondReport.html");
    }
}

及以下是生成报告的屏幕截图:
enter image description here
如果需要任何其他信息,请与我们联系 在此先感谢:)

2 个答案:

答案 0 :(得分:0)

让它在每种方法后检查结果。

@AfterMethod
public void getResult(ITestResult result){
    if(result.getStatus()==ITestResult.FAILURE){
    // Stuff
    }
    report.endTest(logger);
}

答案 1 :(得分:0)

我认为我们需要为每个@Test开始和结束测试(在范围内记录为单独的测试)。在我可以看到的代码中,测试日志记录已经启动并仅以verifyTitle()(第一个测试方法)结束,并且它有三个日志信息。

因此,该报告仅显示一个测试用例(第一个测试方法)和三个信息(三个信息日志在第一个测试方法中)。

请尝试为所有测试方法添加开始/结束测试并检查。

以下是修改后的代码。

...
int nbofnumbers = 0;   // number of numbers in the interval [-5,5]

for (i = 0; i < n; ++i)
{
  printf("%d. Enter number: ", i + 1);
  scanf("%f", &num[i]);

  if (num[i]< 5 && num[i]>-5) {
    nbofnumbers++;
    sum += num[i];
  }
}                              // for loop must end here

average = sum / nbofnumbers;   // we divide by the number of numbers
                               // in the interval [-5,5], not by n
printf("Average = %.2f", average);

return 0;
...

希望这会对你有所帮助。感谢。