Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Как обьеденить результаты тестов в один репорт ReportNG


(Sergey_Kot) #1

Добрый день.

Среда: Java+Selenium+TestNG(использую ReportNG).

Билд проекта через Maven.

Есть папка обектов - сами страницы, есть папка тестов - сами тесты.
В папке тестов - два класа, в каждом из класов набор своих специфических тестов. При запуске билда - все проходит ок, сначало запускается один тест-сьют - прогон, потом идет запуск другого тест-сьюта - в итоге в соответствующей папке (где хранится отчет по тестированию ReportNG - файлик index.html) при открытии репорта - я получаю только результаты последнего прогона тестов (т.е. второго тест-сьюта). Как я понял - результаты первого - просто затерлись.

Каким образом в общем отчёт ReportNG получить все результаты тестов - и первого и второго тест-сьюта?

Спасибо!
Сорри за не очень умный вопрос.


(vmaximv) #2

Объединить никак: разные раны - разные репорты.
Решить “проблему” с “затиранием” - слишком много способов, что бы их все перечислять.


(Sergey_Kot) #3

С одной стороны можно все тесты перенести в один класс - но это как то глупо, т.к. разные тесты делают разные вещи.
Подскажите, пожалуйста, как решить проблему одним или двемя самыми приемлимымы способами?


(vmaximv) #4

А вы начните “с начала”.

Как запускаете, чем запускаете и т.д. За один ран можно запустить несколько сьютов и получить общий репорт.


(Андрей) #5

При запуске тестов с использованием testng.xml генерируется один отчет для нескольких сьютов. Если у Вас тест-сьюты запускаются как отдельные “прогоны” (или например чтобы запустить только упавшие тесты), у нас это решено так: отдельным скриптом результаты прогона перекладываются в новую папку, а следующий прогон переписывает исходную папку. В результате имею несколько папок, которая со старшим индексом соответствует последнему прогону. На мой взгляд это не самое лучшее решение, но уж как есть.


(Sergey_Kot) #6

Запускаю так: в проекте - файл pom.xml - пр. кн. мыши - Run as - Maven test
В Console логируется следующее:

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running **TestSuite**
Starting ChromeDriver.....
________________Test_1________________
......
________________Test_2________________
......
Tests run: 3, Failures: 2, Errors: 0, Skipped: 0...
Running **TestSuite** (уже другой клас с тестами)
Starting ChromeDriver.....
________________Test_1________________
......
________________Test_2________________
......

В итоге я получаю результаты для последнего рана.
Можно ли сделать, что бы эти тест-сьюты были в одном прогоне, если да - то как это сделать, в каких настройках смотреть?


(Sergey Korol) #7

Как выглядят ваши testng.xml и pom.xml с куском, где вы подсовываете suites path?


(Sergey_Kot) #8

testng.xml:
(test.java.MusicCategoryTests - здесь хранятся класы с тестами)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="test.java.MusicCategoryTests.TestNG by packages">
 <test verbose="2" name="test.java.MusicCategoryTests">
    <packages>
     <package name="test.java.MusicCategoryTests"/>
    </packages>
 </test>
</suite>

pom.xml:

<build>
    <sourceDirectory>src</sourceDirectory>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
        </configuration>
      </plugin>
      <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-plugin</artifactId>
      <version>2.5</version>
      <inherited>true</inherited>
      <configuration>
       <properties>
        <property>
       <name>usedefaultlisteners</name>
        <value>false</value>
        </property>
         <property>
        <name>listener</name>
        <value>org.uncommons.reportng.HTMLReporter, org.uncommons.reportng.JUnitXMLReporter</value>
        </property>
         </properties>
       <workingDirectory>target/</workingDirectory>
       <forkMode>always</forkMode>
<!--          <suiteXmlFiles>
           <suiteXmlFile>testng.xml</suiteXmlFile>
         </suiteXmlFiles> -->
       </configuration>
      </plugin>
    </plugins>
  </build>

(Sergey Korol) #9

Почему путь к suites закоменчен? Версия maven-surefire-plugin тоже древнючая.

Как насчет варианта parent suite, содержащего ссылки на 2 рабочих suites?

При этом, в pom вы скормите имя parent suite.

П.С. Я тоже использую reportng, и тоже запускаю несколько suites. Вполне отлично он их объединяет. Проблема тут в способе запуска, как вам уже намекнул @vmaximv.


(Sergey_Kot) #10

Согласен, спасибо, что сказали про путь к suites закоменчен.
Если раскоментить и оставить так как было у меня - т.е. используя package name - то теперь в репорт попадают все резульаты. Но наглядно выходит так, что запускаются оба инстанса драйвера - т.е. будет 10 классов с тестами - запустить 10 инстансов, как я понял.

По поводу parent suite - я правильно понимаю, что в пом файле, так как вы написали, ничего менять не нужно, если сделать так, а в testng файле указать suite-files, то какая структура в самих этих файлах (CH-suite.xml и FF-suite.xml)?


(Sergey Korol) #11

Ну вы ведь сами сказали, что у вас запускаются 2 test suites, вот их и указывайте в parent xml. А в поме надо ссылаться на парент.