Получение NPE при попытке получить отчеты по экстентам для параллельного выполнения теста - PullRequest
0 голосов
/ 04 апреля 2019

Я пытаюсь запустить тестовый сценарий Selenium (Java) (в котором есть два метода @Test) параллельно - в браузере Chrome и браузере Firefox. После завершения прогонов я пытаюсь получить отчет об экстентес итогами выполнения.

То, что я наблюдаю на экране: во-первых, запускается Chrome, запускается тестовая ссылка, и мы находимся на странице входа в приложение. Примерно в это же время запускается браузер Firefox.Кроме того, браузер Chrome больше не выполняет никакого выполнения. Браузер Firefox завершает выполнение для первого метода @Test, закрывает браузер, а затем запускает новый браузер Firefox и завершает выполнение второго метода @Test.Chrome, с другой стороны, не показывает активности.

Когда я проверяю результаты, я вижу следующие ошибки -

java.lang.NullPointerException
    at testscriptspackage.TestLoginPageFeatures.InvalidCredentials(TestLoginPageFeatures.java:87)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)
    at org.testng.internal.Invoker.invokeMethod(Invoker.java:580)
    at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:716)
    at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:988)
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
    at org.testng.TestRunner.privateRun(TestRunner.java:648)
    at org.testng.TestRunner.run(TestRunner.java:505)
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:455)
    at org.testng.SuiteRunner.access$000(SuiteRunner.java:40)
    at org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:489)
    at org.testng.internal.thread.ThreadUtil$1.call(ThreadUtil.java:52)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

Я прошел Отчет по экстентам Проблема Параллельное тестирование , Отчет по экстентам не дает должного отчета о параллельном выполнении и нескольких других похожих потоков, но не очень понимает.

Заметил, что если вместо @ BeforeSuite, я использую @До того, как выполнить ClassClass, выполнение Chrome и Firefox происходит должным образом, но проблема заключается в том, что в моем отчете отображаются результаты только для запуска Firefox, поскольку создается новый отчет, перезаписывая предыдущий, созданный для Chrome. Я полагаю, что это проблема сТемы, так что читаю по теме. Тем не менее, так как выполнение работает с @ BeforeClass, я не очень уверен, смотрю ли я в правильном направлении.

У меня есть 4 файла - 1.DriverSetup.java -где я создаю экземпляр объекта WebDriver.2.GuruLoginPage.java - файл страницы для методов и элементов пользовательского интерфейса страницы входа.

TestLoginPageFeatures.java - Тестовый код
  protected GuruLoginPage glp;
  public ExtentHtmlReporter htmlReporter;
  public ExtentReports report;
  public ExtentTest logger;


   @BeforeSuite
    public void  setExtent()
    {
    htmlReporter = new ExtentHtmlReporter(System.getProperty("user.dir") + "/test-output/TestReport.html"); 
    htmlReporter.config().setDocumentTitle("Test Execution Summary"); 
        htmlReporter.config().setReportName("Test Execution Report "); 
        htmlReporter.config().setTheme(Theme.DARK); 


        report = new ExtentReports();  
        report.attachReporter(htmlReporter);
        report.setSystemInfo("User Name", "Ahaan");

    }
       ...
   @Parameters("Browser")
   @BeforeMethod
    public void setup(String br)
     {
     DriverSetup tdriver=new DriverSetup();
     driver=tdriver.LaunchURL(br);
     glp=new GuruLoginPage(driver);
     glp.verifyHomePageLogo();
   }
   ...
  @AfterMethod
  public void getResult(ITestResult result) throws Exception
   {
     .....
    driver.quit();
   }
  ...
  @AfterSuite
  public void endReport()
  {
      report.flush();
  }
TestNG.xml -
<suite name="My Test Suite" parallel="tests" thread-count="2">
    <test name="Guru Bank Tests - Chrome">
     <parameter name="Browser" value="chrome"/>
        <classes>
            <class name="testscriptspackage.TestLoginPageFeatures"/>            
        </classes>
    </test>
    <test name="Guru Bank Tests - Firefox">
     <parameter name="Browser" value="firefox"/>
        <classes>
            <class name="testscriptspackage.TestLoginPageFeatures"/>            
        </classes>
    </test>
</suite>

Оцените какие-либо предложения о том, что мне нужно изменить, чтобы заставить его работать?Кроме того, можем ли мы добавить данные в отчет Extent в версии 4 отчета Extent? Не могу найти ни одного примера кода для этого. Наконец, я новичок в Selenium, поэтому любые другие предложения по организации кода также приветствуются.Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...