Отчеты по экстентам: тестовые шаги объединяются в последнем тесте в отчетах по экстентам при выполнении теста параллельно - PullRequest
0 голосов
/ 03 июня 2019

Тестовые шаги и журналы тестов объединяются с одним последним тестом.

Экстентный отчет 3.2

Актуальные отчеты Функция 1 регистрирует

enter image description here

Журналы функций 2 [Имеются все шаги]

enter image description here

Структура моего проекта

enter image description here

HomePage.java

package pom;

import test.BaseTest;

public class HomePage extends BaseTest
{

    public void setClick()
    {
        test.pass("This test is pass which is in click of home page");

    }

    public void setName()
    {
        test.fail("This test is fail which is in set of home page");

    }

    public void select()
    {
        test.pass("This test is info which is in selct of home page");

    }
}

Test1.java

package test;

import org.testng.annotations.Test;

import pom.HomePage;

public class Test1 extends BaseTest
{

    @Test
    public void funtion1() 
    {
        HomePage hp = new HomePage();
        hp.setName();
        hp.setClick();
        hp.select();

        test.pass("Test is Passed! ins funtion 2");

    }
}

Test2.java


package test;

import org.testng.annotations.Test;

import pom.HomePage;

public class Test2 extends BaseTest
{
    @Test
    public void funtion2()
    {
        HomePage hp = new HomePage();
        hp.setClick();
        hp.select();

        test.pass("Test is Passed!");

    }
}


BaseTest.Java

package test;
import java.lang.reflect.Method;

import org.testng.ITestResult;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.AfterSuite;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.BeforeSuite;



import com.aventstack.extentreports.ExtentReports;
import com.aventstack.extentreports.ExtentTest;
import com.aventstack.extentreports.Status;
import com.aventstack.extentreports.markuputils.ExtentColor;
import com.aventstack.extentreports.markuputils.MarkupHelper;
import com.aventstack.extentreports.reporter.ExtentHtmlReporter;
import com.aventstack.extentreports.reporter.configuration.ChartLocation;
import com.aventstack.extentreports.reporter.configuration.Theme;

public class BaseTest
{
    public static ExtentHtmlReporter htmlReporter;
    public static ExtentReports extent;
    public static ExtentTest test;

    @BeforeSuite
    public void setUp()
    {
        htmlReporter = new ExtentHtmlReporter("./Reports/MyOwnReport.html");
        extent = new ExtentReports();
        extent.attachReporter(htmlReporter);

        extent.setSystemInfo("OS", "Mac Sierra");
        extent.setSystemInfo("Host Name", "Jayshreekant");
        extent.setSystemInfo("Environment", "QA");
        extent.setSystemInfo("User Name", "Jayshreekant S");

        htmlReporter.config().setChartVisibilityOnOpen(false);
        htmlReporter.config().setDocumentTitle("AutomationTesting.in Demo Report");
        htmlReporter.config().setReportName("My Own Report");
        htmlReporter.config().setTestViewChartLocation(ChartLocation.TOP);
        //htmlReporter.config().setTheme(Theme.DARK);
        htmlReporter.config().setTheme(Theme.STANDARD);
    }

    @BeforeMethod
    public void startTest(Method m)
    {
        test = extent.createTest(m.getName(),"This is the description of Test" + m.getName());

    }


    @AfterMethod
    public void getResult(ITestResult result)
    {
        if(result.getStatus() == ITestResult.FAILURE)
        {
            test.log(Status.FAIL, MarkupHelper.createLabel(result.getName()+" Test case FAILED due to below issues:", ExtentColor.RED));
            test.fail(result.getThrowable());
        }
        else if(result.getStatus() == ITestResult.SUCCESS)
        {
            test.log(Status.PASS, MarkupHelper.createLabel(result.getName()+" Test Case PASSED", ExtentColor.GREEN));
        }
        else
        {
            test.log(Status.SKIP, MarkupHelper.createLabel(result.getName()+" Test Case SKIPPED", ExtentColor.ORANGE));
            test.skip(result.getThrowable());
        }
    }

    @AfterSuite
    public void tearDown()
    {
        extent.flush();
    }
}

testngall.xml

<suite name="Suite" parallel="tests">
    <test name="Test 1 ">
        <classes>
            <class name="test.Test1" />
        </classes>
    </test>
    <test name="Test 2">
        <classes>
            <class name="test.Test2" />
        </classes>
    </test>
</suite> <!-- Suite -->

Итак, это вся структура кода проекта, я получаю журналы, добавляемые в последний тест

Ответы [ 3 ]

2 голосов
/ 03 июня 2019

Это ваша проблема:

public static ExtentTest test;

Так как это статично, существует только один его экземпляр.Когда вы запускаете свои тесты параллельно, этот @BeforeMethod вызывается дважды.

@BeforeMethod
public void startTest(Method m)
{
    test = extent.createTest(m.getName(),"This is the description of Test" + m.getName());

}

Второй раз, когда он называется первым тестом, вероятно, еще не завершен, но он все еще ссылается на объект теста, поэтому вы получите выходные данные второго теста и некоторые части первого теста, которыене завершил работу в тот момент, когда был вызван @BeforeMethod.Вам нужно будет переписать свой код, чтобы не использовать статический test объект.

0 голосов
/ 27 июня 2019

В классе, в котором вы создаете тесты, вы можете сделать его дочерним классом класса, в котором вы определяете классы и переменные отчета по экстентам.Теперь в дочернем классе (с тестами) вы можете создать несколько экземпляров Extent Test.

Поэтому создайте новый экземпляр для каждого нового теста

0 голосов
/ 24 июня 2019

Для обеспечения безопасности потока параллельного выполнения ваш ExtentTest должен использовать переменную экземпляра класса ThreadLocal. попробуйте,

private static ThreadLocal<ExtentTest> test = new InheritableThreadLocal<>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...