как реализовать прослушиватель iTestContext без добавления в аргумент метода testng (из XML) для утилиты PDFBox - PullRequest
0 голосов
/ 20 декабря 2018

Я автоматизирую приложение Salesforce с помощью Selenium TestNG.Я реализую утилиту, используя apache PDFBox, где я вставляю все свои скриншоты в PDF, чтобы сделать клиента счастливым.

Моя логика заключается в том, что я создаю скриншоты в каждом методе с 1.png, 2.png и т. Д. До n.pngи вставьте их в pdf, используя методы pdfbox.

Проблема в том, что мое число снимков экрана является переменным, поэтому я реализовал iTestContext, где я установил переменный счетчик на максимальное число, передал их моему методу after, где я получил счетчик, иэто количество скриншотов вставлено - что-то вроде этого

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-файл и использовать его для всех методов?

Надеюсь, я предоставил все детали

1 Ответ

0 голосов
/ 20 декабря 2018

Если вам нужно заполучить текущий объект ITestContext (представляющий текущий выполняемый тег <test>), вам не нужно передавать его в качестве параметра в метод @Test.

Вы можете получить доступ к нему из @Test аннотированного метода тестирования с помощью чего-то вроде этого:

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

Таким образом, вам не нужно передавать объект org.testng.ITestContext в качестве параметрана ваш @Test метод.

Могу ли я передать его в XML-файл и использовать его для всех методов?

Нет, вы не можете передать объект ITestContext черезXML-файл.

...