【问题标题】:Extent Reports V4 overwriting test results范围报告 V4 覆盖测试结果
【发布时间】:2019-01-17 13:46:07
【问题描述】:

我正在使用带有 selenium / C# 的 Extent Reports V3,我刚刚升级到 V4。以前每次运行都会根据日期戳/班级名称/时间戳给我一个独特的报告。但是,在迁移到 V4 之后,它总是将所有内容放在同一个名为“index”的文件和一个名为“dashboard”的单独文件下,该文件位于另一个文件之上,用于导航目的。

这是我开始报告的代码:

    htmlReporter = new ExtentHtmlReporter($"C:\\Test-Results\\" + dateStamp + "\\" + TestClassName + " " + timeStamp + ".html");
    extent = new ExtentReports();
    extent.AttachReporter(htmlReporter);
    extent.AddSystemInfo("Host Name", "Extent Framework");
    extent.AddSystemInfo("Environment", "Local Machine");
    extent.AddSystemInfo("User Name", "MyName");
    htmlReporter.LoadConfig(CurrentDirectory + "\\extent-config.xml");

现在,每次我运行测试时,它都会用新的测试结果覆盖现有的索引文件,而不是附加我当前的结果或给我一个唯一的索引文件。如果需要,我可以提供有关如何开始报告/创建测试所需的任何其他信息,但现在这是我的测试文件中的内容:

    [ClassInitialize()]
    public static void MyClassInitialize(TestContext testContext)
    {
        report.startReport("Report Name");
    }

    [ClassCleanup()]
    public static void MyClassCleanup()
    {
        report.Flush();
    }

    [TestInitialize()]
    public void MyTestInitialize()
    {
        string name = TestContext.TestName;
        report.CreateTest(name);

    }

【问题讨论】:

  • v4 的增强特性。为了克服它,我们必须在版本 4 中使用 ExtentV3HtmlReporter 类。通过使用这个类,我们将拥有我们拥有的报告。它不会被索引文件覆盖。此外,V4 解决了许多错误。所以使用的东西与第 4 版报告相同。您可以比较这两个报告,然后您就会有自己的解决方案。
  • @IshitaShah 谢谢 Ishita,我没有意识到这个 ExtentV3HtmlReporter 可供我们使用。这确实让我看到了新的范围报告,但使用了我的旧文件组织。作为旁注,我也在研究 klovreporter,由于底层的 mongoDB,该组织似乎更好地内置在 klov 中?
  • 还有一点需要注意:ExtentV3HtmlReporter 似乎忽略了配置文件的“黑暗”主题部分。据我所知,在 C# 中,我们没有办法使用代码设置配置。
  • 深色主题问题今天已修复。 KlovReporter 即将推出..
  • 使用默认版本 4 HtmlReporter,您将创建 4 个文件以保持整体报告的大小和性能。这也是您看到创建多个文件的原因。您现在可以提供一个唯一的文件夹路径来存储所有文件,而不是提供文件路径。尽管有这些变化,我还是强烈推荐使用更新后的 HtmlReporter。

标签: extentreports selenium-extent-report


【解决方案1】:

它是 v4 的增强功能。为了克服它,我们必须在版本 4 中使用 ExtentV3HtmlReporter 类。通过使用这个类,我们将拥有我们拥有的报告。它不会被索引文件覆盖。此外,V4 解决了许多错误。所以使用的东西与第 4 版报告相同。您可以比较这两个报告,然后您就会有自己的解决方案。

【讨论】:

    【解决方案2】:

    我最近开始研究 Extent Reports v4,为了解决文件被替换的问题,您必须按照@Ishita Shah 的回答使用 v4 和 v3 格式,请参阅Extent Reports generating two HTML Reports

    另外,我做了一些调整,为每次运行生成新的 html 文件,而不替换已经生成的文件。

    string fileName = "ExtentReport_" + DateTime.Now.ToString("MMM-dd-yyyy hh-mm-ss");
    //Rename index.html with a new file name
    renameFile("C:\\Reports\\index.html", fileName + "_Index.html");
    
    //Replace "index.html" string inside the "index.html" file with the new filename
    replaceTextHTMLFile("C:\\Reports\\" + fileName + "_Index.html", "index.html", fileName + "_Index.html");
    

    同样的逻辑可以用于 Dashboard.html 和 tags.html

    重命名文件:

    public static void renameFile(string filePath, string oldFileName, string newFileName)
    {
        System.IO.File.Move(filePath + oldFileName, filePath + newFileName);
    }
    

    替换文本HTML文件:

    public static void replaceTextHTMLFile(string filePath, string findText, string replaceText)
    {
        try
        {
            StreamReader objReader = new StreamReader(filePath);
            string content = objReader.ReadToEnd();
            objReader.Close();
    
            content = Regex.Replace(content, findText, replaceText);
    
            StreamWriter writerObj = new StreamWriter(filePath);
            writerObj.Write(content);
            writerObj.Close();
        }
        catch (Exception e)
        {
            Console.WriteLine("Exception occurred. Messgae: " + e.Message);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-29
      • 2022-08-24
      • 2018-05-19
      • 2018-07-27
      相关资源
      最近更新 更多