我有两种测试方法,我编写了一些代码来验证链接的标题。在一种方法中,我故意传递了一种方法而另一种方法失败但在报告中它只在饼图中给出了传递状态。如何跟踪失败的一个?
以下是我的代码:
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");
}
}
答案 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;
...
希望这会对你有所帮助。感谢。