консолидированные результаты тестов для нескольких наборов тестов с использованием слушателей testng

У меня есть набор тестов Sanity testng xml, который содержит несколько наборов тестов, и я хочу получить результаты набора тестов Sanity и отобразить их на консоли.

Я пытался использовать IsuiteListener и получаю результаты отдельных наборов тестов.

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

package utilities;

import java.util.Map;

import org.testng.ISuite;
import org.testng.ISuiteListener;
import org.testng.ISuiteResult;
import org.testng.Reporter;

public class Listener implements ISuiteListener 
{

    @Override
    public void onStart(ISuite arg0) {
        Reporter.log("About to begin executing Suite " + arg0.getName(), true);

    }

    @Override
    public void onFinish(ISuite suite) 
    {
        Map<String,ISuiteResult> results=suite.getResults();
        for(String key: results.keySet())
        {
             ISuiteResult con = results.get(key);

            int totaltestcases=con.getTestContext().getAllTestMethods().length;

        int passtestcases= con.getTestContext().getPassedTests().size();
        int failedtestcases=con.getTestContext().getFailedTests().size();
        int skippedtestcases=con.getTestContext().getSkippedTests().size();
        int percentage=(passtestcases*100)/totaltestcases;
        System.out.println("PASS PERCENTAGE : "+percentage+"%");

        }
    }



}

Ниже представлен xml-файл набора тестов работоспособности

<suite name="Sanity Test Suite">
<listeners>

 <listener class-name="utilities.Listener"></listener>

 </listeners>
   <suite-files>
    <suite-file path="TestSuit_01.xml"/>
    <suite-file path="TestSuit_02.xml"/>

</suite-files>
</suite>

person Yashica    schedule 04.01.2018    source источник


Ответы (1)


Вы должны создать реализацию прослушивателя TestNG org.testng.IReporter, который запускается после того, как все комплекты будут завершены, а затем ссылаться на этот прослушиватель в xml-файле вашего комплекта с помощью тега <listeners>.

person Krishnan Mahadevan    schedule 08.01.2018
comment
Привет, @Krishnan, я пробовал с IReporter, но теперь suite.getresults ничего не возвращает. ISuite suite = suites.get(0); Карта‹String,ISuiteResult›results=suite.getResults(); for ( ISuiteResult sr : results.values() ) { ITestContext tc = sr.getTestContext(); System.out.println(Пройденные тесты для пакета ' + suite.getName() + ': + tc.getPassedTests().getAllResults().size()); } код не зацикливается - person Yashica; 08.01.2018
comment
@Yashica - это основной вариант использования IReporter. Так что я был бы удивлен услышать, что это не работает. Не могли бы вы опубликовать свой полный код, возможно, на github и поделиться ссылкой, чтобы я мог взглянуть на него, чтобы увидеть, что происходит не так? - person Krishnan Mahadevan; 09.01.2018
comment
Поскольку я использую suite.get(0), который является моим набором здравомыслия, и у него нет никаких результатов тестирования, поэтому results.value() имел значение null. я решил суммированием результатов каждого другого тестового примера, а затем отобразил сводный отчет. большое вам спасибо за вашу помощь !! - person Yashica; 09.01.2018