如何在不添加pdfbox实用程序的方法参数testng(来自XML)的情况下实现iTestContext侦听器



我正在使用Selenium Testng自动化Salesforce应用程序。我正在使用Apache PDFBox实施实用程序,在其中将所有屏幕截图粘贴到PDF中以使客户端快乐。

我的逻辑是,我在每种方法中使用1.png,2.png等创建屏幕截图,直到N.PNG并使用PDFBox方法将它们粘贴到PDF中。

问题是我的屏幕截图数量是可变的,因此我实现了iTestContext,在其中设置了一个可变计数器到最大数字,将它们传递到我检索计数器的后方法,并且屏幕截图数量被粘贴了 - 类似于此

Class Login {
    @Test
    mymethod(ItestContext context){
        commonfunctions.savescreenshot(1.png);
        commonfunctions.savescreenshot(2.png);
        commonfunctions.savescreenshot(n.png);
        context.setAttribute("Counter", "n");
    }
    @AfterMethod
    myaftermethod(){
        String PATH = //Path of my test method    
        String MethodCounter = (String)context.getAttribute("Counter");
        PDFUtility.addImagetoPDF(PATH,Integer.parseInt(MethodCounter) );
    }
}

问题是我有很多我需要实现的方法,并且我不希望 ITestContext侦听器作为参数作为每个方法。我可以通过xml文件传递并将其用于所有方法吗?

希望我提供了所有详细信息

如果您需要保留当前的ITestContext对象(这是执行当前<test>标签的表示),则无需将其作为参数传递给@Test方法。

您可以在@Test注释的测试方法中通过此类操作来访问它:

org.testng.ITestContext context = 
org.testng.Reporter.getCurrentTestResult().getTestContext();

这样,您就不需要将org.testng.ITestContext对象作为参数传递给@Test方法。

我可以将其传递到XML文件中并将其用于所有方法?

否,您无法通过XML文件传递ITestContext对象。

最新更新