В настоящее время я использую Avenstack extension report версии 4.1.3 вместе со слушателями TestNG для создания отчетов об испытаниях. В моем сценарии автоматизации (java) я использую данные из таблицы Excel, используя apache POI и ExcelData для чтения файла класса utils. Проблема в том, что в моем API я отправляю 10 значений (т.е. выполняю один и тот же API 10 раз с разными данными), и после выполнения при проверке с помощью отчета avenstack HTML он показывает только один результат теста. Но эти отчеты об объеме работают правильно при использовании с Selenium webDriver. (Та же версия 4.1.2) Единственная разница в Selenium, я использовал аннотации TestNG @dataprovider для анализа данных из файла Excel и сохранял их в отдельном объект 2-мерный массив в отдельном классе, и из этого массива я буду вызывать в своих тестовых примерах внутри аннотации @Test. [т.е. @Test [dataprovider, dataProviderClass]], а здесь, в Rest API Automation, я буду непосредственный прием значений с помощью файла класса утилиты программы чтения Excel [i., e Итерация количества строк и столбцов на листе Excel внутри For l oop и выборка значений из ячейки без использования аннотации @DataProvider TestNG]. Таким образом, в случае Selenium сценарий работает отлично., Но мне нужно знать, почему он не работает в Rest Automation. Пожалуйста, дайте мне знать причину, по которой отчет о степени не удается получить тесты в автоматизации API.
Мой TestNG. xml
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Practice API Test Suite">
<listeners>
<listener class-name="practice.utils.ExtentReporting"/>
</listeners>
<test name="Login Test">
<packages>
<package name="practice.tests.POST.Login"/>
</packages>
<classes>
<class name="practice.tests.POST.Login.LoginTestClass"/>
</classes>
</test>
</suite>
Мой класс слушателя TestNG с отчетами по экстентам:
public class ExtentReporting extends TestListenerAdapter
{
public static ExtentSparkReporter sparkReporter;
public static ExtentReports extentReport;
public static ExtentTest extentTest;
public static String reportPath = "C:\\Backup\\RestAPI Automation - Workspace\\Practice_API\\test-output\\"+"Test Report";
public void onStart(ITestContext testContext)
{
DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy_HH-mm-ss");
Date date = new Date();
String filePathdate = dateFormat.format(date).toString();
String actualReportPath = reportPath + "index.html";
new File(actualReportPath).renameTo(new File(
"C:\\Backup\\RestAPI Automation - Workspace\\Practice_API\\test-output\\"+ "Automation_" + filePathdate + ".html"));
sparkReporter = new ExtentSparkReporter(reportPath);
sparkReporter.config().setDocumentTitle("Automation Test Report");
sparkReporter.config().setReportName("API Test Automation Report");
sparkReporter.config().setTheme(com.aventstack.extentreports.reporter.configuration.Theme.DARK);
extentReport = new ExtentReports();
extentReport.attachReporter(sparkReporter);
extentReport.setSystemInfo("Practice API", "Extent Report");
extentReport.setSystemInfo("Windows", System.getProperty("os.name"));
extentReport.setSystemInfo("Environment","QA");
}
public void onTestSuccess(ITestResult tr)
{
extentTest = extentReport.createTest(tr.getName());
extentTest.log(Status.PASS,
MarkupHelper.createLabel(tr.getName() + "Test Case passed", ExtentColor.GREEN));
extentTest.pass(tr.getName() + "Test Case Passed");
}
public void onTestFailure(ITestResult tr)
{
extentTest = extentReport.createTest(tr.getName());
extentTest.log(Status.FAIL, MarkupHelper.createLabel("Test Case Failed", ExtentColor.RED));
extentTest.log(Status.FAIL,
MarkupHelper.createLabel(tr.getThrowable() + "Test Case Failed", ExtentColor.RED));
// Here you can add screenshot in the report for fail case
String screenshotPath="C:\\Backup\\RestAPI Automation - Workspace\\Practice_API\\Screenshots"+tr.getName()+".png";
File f = new File(screenshotPath);
if(f.exists())
{
try {
extentTest.fail("Screenshot is below:" + extentTest.addScreenCaptureFromPath(screenshotPath));
}
catch (IOException e)
{
e.printStackTrace();
}
}
extentTest.fail(tr.getName() + "Test Step Failed");
}
public void onTestSkipped(ITestResult tr)
{
extentTest = extentReport.createTest(tr.getName());
extentTest.log(Status.SKIP,
MarkupHelper.createLabel(tr.getName() + "Test Case Skipped", ExtentColor.ORANGE));
extentTest.skip(tr.getName() + "Test Skipped");
}
public void onFinish(ITestContext testContext)
{
extentReport.flush();
}
}
Изображения прикреплены
Отчеты об экстентах Avenstack работают нормально в селене
Отчет Avenstack в моем API-интерфейсе показывает только один тест
Консоль IDE, показывающая, что тест выполнен 10 раз. т.е. только 1 тестовый пример, но с 10 разными значениями.