Скомпилируйте результаты всех наборов тестов в отчете о степени

В отчете об экстенте указывается только последний запущенный набор тестов.

Я установил тесты на селен с 10 разными костюмами, которые запускаются по порядку. Проблема в том, что отчет Extent регистрирует только результаты последнего набора. Я пробовал разные способы реализации отчета, чтобы собрать все результаты.

Структура кода: BaseSetUp Class - инициализировать драйвер (OneTimeSetUp, SetUp, TearDown, OnetimeTearDown)

Вызовы Generalmethod - наследуются от BaseSetUp

PageObject Page - получить все объекты страницы

TestSuits - наследуется от общих методов.

У меня есть такой отчет в классе BaseSetUp:

[OneTimeSetUp]
    public void Setup()
    {

        try
        {
            extent = new ExtentReports();
            var dir = AppDomain.CurrentDomain.BaseDirectory.Replace("\\bin\\Debug", "");
            var htmlReporter = new ExtentHtmlReporter(dir + "\\Test_Execution_Reports" + "\\Automation_Report" + ".html");
            extent.AddSystemInfo("Environment", "Xylect AT");
            extent.AddSystemInfo("User Name", "Lucas");
            extent = new ExtentReports();
            extent.AttachReporter(htmlReporter);


        }
        catch (Exception e)
        {
            throw (e);
       }}



 [SetUp]
    public void BeforeTest()
    {
        try
        {
            _test = extent.CreateTest(TestContext.CurrentContext.Test.Name);
        }
        catch (Exception e)
        {
            throw (e);
        }
    }


    [TearDown]
    public void AfterTest()
    {
        try
        {
            var status = TestContext.CurrentContext.Result.Outcome.Status;
            var stacktrace = "" + TestContext.CurrentContext.Result.StackTrace + "";
            var errorMessage = TestContext.CurrentContext.Result.Message;
            Status logstatus;
            switch (status)
            {
                case TestStatus.Failed:
                    logstatus = Status.Fail;
                    string screenShotPath = Capture(driver, TestContext.CurrentContext.Test.Name);
                    _test.Log(logstatus, "Test ended with " + logstatus + " – " + errorMessage);
                    _test.Log(logstatus, "Snapshot below: " + _test.AddScreenCaptureFromPath(screenShotPath));

                    break;
                case TestStatus.Skipped:
                    logstatus = Status.Skip;
                    _test.Log(logstatus, "Test ended with " + logstatus);
                    break;
                default:
                    logstatus = Status.Pass;
                    _test.Log(logstatus, "Test ended with " + logstatus);
                    break;
            }


        }
        catch (Exception e)
        {
            throw (e);
        }
    }

   [OneTimeTearDown]
    public void TearDown()
    {

        try
        {

            //zip();
            //Email();
            extent.Flush();
            driver.Close();
            driver.Quit();
        }
        catch (Exception e)
        {

            throw (e);
        }

    }

Я видел пару методов, в которых предыдущий отчет добавлялся к «новому» созданному, но я не заставил это работать.

Пример тестового набора в одном из наборов тестов

        [TestCase(TestName = "01_LogIn"), Order(1)]
    public void LogIn()
    {
        LogIn();
        string loginAssert = HomePage.expLoginName.Text;
        Assert.IsTrue(loginAssert.Contains("Hi, " + username + ""), "Login falied");

    }

Есть идеи, как мне двигаться дальше?

Отчет о текущем экстенте V4


person Lucas    schedule 10.09.2019    source источник
comment
запускается ли OneTimeSetUp каждый раз, когда запускается новый пакет? тогда у вас есть эта проблема   -  person Sureshmani Kalirajan    schedule 10.09.2019
comment
Да. как тогда должно быть?   -  person Lucas    schedule 11.09.2019
comment
Мне нужна дополнительная информация о том, как настраиваются люксы? Как вы запускаете тестовый прогон - testng runner? Или основной метод.? Создание объекта отчета о степени должно происходить только один раз за все время выполнения. посмотрите, сможете ли вы разработать логику, чтобы настроить его только один раз и передать отчет остальным программам.   -  person Sureshmani Kalirajan    schedule 11.09.2019


Ответы (1)


Вы просто переходите по этой ссылке. Надеюсь, это решит вашу проблему.

Вы должны создать 3 класса.

BaseFixture.cs
ExtentManager.cs
ExtentTestManager.cs

После этого вы можете инициализировать BaseFixture в каждом тестовом классе.

[TestFixture, Parallelizable(ParallelScope.Fixtures)]
    public class MemberLogInOut : BaseFixture

https://github.com/anshooarora/extentreports-csharp/tree/master/ExtentReports/ExtentReports.Tests/Parallel

person murthy    schedule 12.09.2019
comment
Спасибо! Попробую настроить как описано в ссылке. Однако я получаю сообщение об ошибке в классе ExtentManager в методе htlm.Configuration (). Откуда этот метод? - person Lucas; 13.09.2019
comment
Привет, Лукас. извините, я не понял, что вы сказали. В любом случае, можно ли поделиться здесь своим кодом? Я постараюсь. какую версию ExtentReports вы используете? - person murthy; 16.09.2019
comment
теперь он работает ... Я действительно не могу поделиться кодом, кроме кода, предоставленного из отчета о степени, из-за компании. Спасибо за помощь! - person Lucas; 16.09.2019
comment
Отлично ... Хорошая работа. - person murthy; 17.09.2019