首页 > 解决方案 > 如何从 Excel 表中提供的测试数据中打印日志以显示在范围报告中。我正在使用带有 testng 和 maven 的混合框架

问题描述

在 Keyword.java 类中,我包括了这个:

public void logs(String data) throws Throwable
{
    
    extent = new ExtentReports();
    test = extent.createTest("SomeName");
    htmlReporter = new ExtentHtmlReporter("Test.html");//Constructor takes a path
    extent.attachReporter(htmlReporter);
    test.info( data);

在 ExecuteLeadTest.java 我有这个代码:

    @Test
    public void salesBooking() throws Throwable {
    System.out.println("Start Sales Booking function...........");

    key.logs(data);

    SalesBooking exetest = new SalesBooking();

    String filePath = "..//FarmERPAutomation//src//test//java//datafile//FarmERPTestCase - 
    Sales Booking.xlsx";
    String sheetName = "Sales Booking";

    exetest.readExcelfile(filePath, sheetName);

    System.out.println("End Sales Booking function.............");

}

public void readExcelfile(String filePath, String sheetName) throws Throwable {

    ArrayList a = new ArrayList();
    File src = new File(filePath);
    FileInputStream file = new FileInputStream(src);
    XSSFWorkbook b = new XSSFWorkbook(file);
    Sheet s = b.getSheet(sheetName);

    Iterator itr = s.iterator();

    while (itr.hasNext()) {
        Row rowitr = (Row) itr.next();
        Iterator cellitr = rowitr.cellIterator();

        while (cellitr.hasNext()) {
            Cell celldata = (Cell) cellitr.next();

            switch (celldata.getCellType()) {
            case Cell.CELL_TYPE_STRING:
                a.add(celldata.getStringCellValue());
                break;
            case Cell.CELL_TYPE_NUMERIC:
                a.add(celldata.getNumericCellValue());
                break;
            case Cell.CELL_TYPE_BOOLEAN:
                a.add(celldata.getBooleanCellValue());
                break;

            }// switch

        } // while
    } // while

    SalesBooking exetest = new SalesBooking();
    exetest.forloop(a);

    file.close();

}

public void forloop(ArrayList a) throws Throwable {
    Keywords key = new Keywords();
    SalesBooking exetest = new SalesBooking();

    for (int i = 0; i < a.size(); i++) {

        // openbrowser
        if (a.get(i).equals("openbrowser")) {
            String keyword = (String) a.get(i);
            String data = (String) a.get(i + 1);
            String objectname = (String) a.get(i + 2);
            String runmode = (String) a.get(i + 3);

            System.out.println(keyword);
            System.out.println(data);
            System.out.println(objectname);
            System.out.println(runmode);

            if (runmode.equals("yes")) {
                key.openbrowser();
            }
        }
        if (a.get(i).equals("logs")) {
            String keyword = (String) a.get(i);
            String data = (String) a.get(i + 1);
            String objectname = (String) a.get(i + 2);
            String runmode = (String) a.get(i + 3);

            System.out.println(keyword);
            System.out.println(data);
            System.out.println(objectname);
            System.out.println(runmode);

            if (runmode.equals("yes")) {
                key.logs(data);
            }
        }

尽管在 excel 表中获取日志关键字,为什么销售预订没有从关键字调用 logs() 方法并使用日志生成范围报告?

如果这是错误的过程,请就如何在范围报告中从 Excel 表打印日志提出替代方案。

标签: javaselenium-webdriver

解决方案


推荐阅读