【问题标题】:Compile results from all test suites in extent report在范围报告中编译所有测试套件的结果
【发布时间】:2019-09-10 13:01:08
【问题描述】:

范围报告仅报告已运行的最后一个测试套件。

我已经设置了 10 种不同套装的硒测试,这些套装按顺序运行。问题是范围报告只记录最后一个套件的结果。我尝试了不同的方法来实现报告以汇总所有结果。

代码结构: BaseSetUp 类 - 初始化驱动程序(OneTimeSetUp、SetUp、TearDown、OnetimeTearDown)

通用方法调用 - 从 BaseSetUp 继承

PageObject 页面 - 获取所有页面对象

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

【问题讨论】:

  • 每次新套件开始运行时是否都会运行 OneTimeSetUp?那你有这个问题
  • 是的。那应该怎么样?
  • 我需要更多关于如何设置套件的信息?你是如何触发测试运行的 - testng runner?或 main 方法。?在整个执行过程中,范围报告对象的创建应该只发生一次。看看你是否可以设计一个逻辑来只设置一次并将报告传递给其他套件。

标签: c# selenium selenium-webdriver nunit extentreports


【解决方案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

【讨论】:

  • 谢谢!我将尝试链接中描述的设置。但是,我在 htlm.Configuration() 方法的 ExtentManager 类中遇到错误。这个方法哪里来的?
  • 嗨,卢卡斯。抱歉,我没看懂你说的。无论如何可以在这里分享你的代码吗?我会尝试。您使用的是哪个 ExtentReports 版本?
  • 现在可以工作了。由于公司的原因,除了范围报告中提供的代码之外,我无法真正分享代码。感谢您的帮助!
  • 很好...干得好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-03-07
  • 1970-01-01
  • 1970-01-01
  • 2021-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多