【问题标题】:How to customize Selenium TestNG default report or create new HTML report?如何自定义 Selenium TestNG 默认报告或创建新的 HTML 报告?
【发布时间】:2017-01-31 22:18:23
【问题描述】:

我尝试了 ReportNG,但它现在没有更新报告并且我发现 ReportNG 不再使用 from this answer。 我想创建一个测试报告/自定义 TestNG 报告给开发团队。我使用混合框架创建项目并关注this tutorial

【问题讨论】:

  • 这是一个模糊的问题,你说的I tried ReportNG, but it is not updating the report now是什么意思?
  • @pArAs 我使用 ReportNG 生成报告,link 并得到了其中提到的报告。但该报告仅生成一次。经过一些更改后,我再次运行了我的项目,但它仍然显示生成的第一个报告。

标签: selenium selenium-webdriver reporting-services testng


【解决方案1】:

是的,您可以使用 Listeners 和 Reporters 自定义 TestNG 报告。这是文档的link。从一个问题中不清楚您要进行哪种类型的自定义。

但我想在这里提出更好的报告替代方案。有两个最常用的库通常与 Selenium 一起使用。

  1. Allure Test Report
  2. Extent Report

我没有用过 Allure 测试报告,但它似乎很好并且在社区中被广泛使用。我曾在两个项目中使用过 Extent Reports,对此我非常满意。 Anshoo Arora 做得非常出色。文档非常好,有很多示例和代码 sn-p。我强烈推荐它。

【讨论】:

  • 嗨@4M01... 我的意思是我想创建带有自定义字段的报告,例如预期结果、实际结果、结果等。
  • 好像您来自 QTP/UFT 背景 :-) 对于您的要求,您需要进行自定义编码。这不是直接的答案,因为它将取决于您必须为项目构建的框架。但是我能够使用范围报告来实现您在此处提出的要求。尝试使用范围报告并告诉我
  • 好的@4M01。我将尝试使用范围报告。我是一名手动测试员,现在切换到自动化 :-)
  • 在这种情况下,只需在依赖项管理或类路径库中添加 QAF[qmetry.github.io/qaf/latest/download.html] jar,它将使您能够使用现有代码报告功能。
【解决方案2】:

要自定义 selenium TestNG 报告,您可以使用 testng 侦听器。

  1. ITestListener:记录结果/测试通过/失败/跳过的屏幕截图。

  2. IReporter:从 xml 套件结果和日志生成 html 报告。

但您也可以使用qaf-reporting

提供详细的实时报告(无需等待执行完成)。

【讨论】:

  • 我同意,QAF 报告非常具有描述性,您无需等待整个执行完成即可获得报告。 QAF 报告优于其他报告的好处是:它是实时报告,并且在大型测试台的情况下不会引入内存不足问题。我们发现在生成报告时,由于内存不足导致执行大量测试用例时多次崩溃。
【解决方案3】:

我知道这是旧线程,但是可以编辑这些报告,并且可以像下面那样制作自定义报告。我还解释了here 如何编辑TestHTMLReporter。如果你想知道 index.html 报告是如何定制的,请看here,我已经详细解释过了

使用您的 customReport 您必须实现 IReporter ,扩展 TestListenerAdapter 并覆盖 generateReport 方法,如果您想实现自定义 TestHTMLReporter 。对于其他记者,您可能需要做一些不同的事情,但概念将保持不变。您将实现如下所示的自定义“TestHTMLReporter”。

在您的项目中创建一个CustomReport.java 文件并复制粘贴TestHTMLReporter.java 的全部内容,在getOutputFile 方法中更改文件名,如下所示

public class CustomReport  extends TestListenerAdapter implements IReporter {

     @Override
        public void generateReport(List<XmlSuite> xmlSuites, List<ISuite> suites,
                                   String outputDirectory) {

        }
   ...
   //paste the content of TestHTMLReporter.java here
   ...
   ...

确保所有来自TestHTMLReporter.java 的导入都已到位 现在,根据您的要求在此文件中进行更改。例如:如果您想添加每个测试的结束时间,那么在 generateTable 方法中的正确位置添加以下 sn-p

// Test class
      String testClass = tr.getTestClass().getName();
       long testMillis = tr.getEndMillis();
        String testMillisString = Long.toString(testMillis);
      if (testClass != null) {
        pw.append("<br>").append("Test class Name: ").append(testClass);

         // this line to add end time in ms
        pw.append("<br>").append("End Time(ms): ").append(testMillisString); 
        // Test name
        String testName = tr.getTestName();
        if (testName != null) {
          pw.append(" (").append(testName).append(")");

        }   

然后你会得到如下所示

现在,您将获得两份报告,一份是默认报告,另一份是您的文件名。 现在唯一剩下的就是关闭默认报告侦听器,因此您只会得到一份报告。为此,您可以关注this 或者您可以搜索解决方案。希望这会有所帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多