当前位置: 首页 > 知识库问答 >
问题:

创建自定义测试HTML报告与浏览器名称对方法名称

段宏毅
2023-03-14

我正在进行跨浏览器测试,在4种浏览器Chrome、Firefox、IE和Safari上运行多个类中的每个测试方法。

testng HTML报告

即使testng HTML报告会有浏览器名称,但与测试方法相对应也很好。

我找到了这个链接,但我只需要浏览器列旁边的方法列到自定义报告中的链接

共有2个答案

齐承运
2023-03-14

您可以通过创建自定义的TestHTMLReport来实现这一点。传递CustomReport.java类中的任何数据,并生成自己的报告,如下所示。我在这里也解释过了

使用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方法的正确位置添加下面的代码片段

// 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(")");

        }   

然后你会像下面这样

现在,您将得到两个报告,一个是默认报告,另一个是文件名报告。现在剩下的唯一一件事就是关闭默认的报告侦听器,这样您只会得到一个报告。为此,你可以遵循这一点,也可以寻找解决方案。希望这有帮助

赖运珧
2023-03-14

你可以在这里这样做。但最好使用报告功能,例如,您可以通过任何测试名称和描述来报告see docs。

 类似资料:
  • 我有一个简单的测试套件(对这个例子来说非常简单)。我在构造函数上使用@Factory表示法和一个@DataProvider,它返回一个城市对象[][](多达100个),我运行我的测试。在这个例子中有3个@Test方法。如果我不将测试名称附加到城市名称,我将有一个超文本语言标记报告,它只会一遍又一遍地列出3个测试方法,无法区分它们。 我尝试过这样的例子:这里。 我的测试课做得很好。我遇到的问题是,当

  • 我正在从事一个需要以编程方式调用TestNG(使用数据提供程序)的项目。情况很好,只是在报告中,我们得到了@测试方法的名称,这是一种处理许多情况的通用方法。我们希望在报告中得到一个有意义的名字。 我一直在研究这个问题,发现了三种方法,但不幸的是,所有方法都失败了。 1) 实施ITest 我在这里和这里都发现了这个 我一输入@Test方法就设置了我想要的名称(对于我尝试的所有3种方式,这就是我设置名

  • 我用Selenium创建了测试框架,并为测试报告设置了ExtentReports。对字段使用页面对象模型和@FindBy注释为每个页面创建自己的WebElements存储。现在我想创建自定义注释@Name 以及它的实现,以便能够在我的报告后面使用每个WebElement的描述。我有我自己的实现点击()方法 我能够得到所有元素的描述注释类与反射像这里 是否可以在java中读取注释的值? 但无法获取我

  • 我在java testng测试中使用allure testng(2.12.1)适配器。我有使用@DataProvider的测试。我的测试实现了ITest,以在运行时更改测试方法实例名称。当我运行测试时,我看到了不同的测试方法名称,但在allure报告中,它为每个测试运行显示了相同的测试方法。如何配置诱惑报告以显示类似IDE的内容? 预期:测试一测试二测试三 实际:myTest myTest myT

  • 在范围报告中,我想显示测试的名称而不是方法名称。所以我找到了一个解决方案,为@Test注释添加了一个test name属性 问题1:在报告中,我看到getTestName方法返回null。 问题2:我无法在报告的“测试”列下创建测试名称为的测试。这是一条可以做到这一点的线: 测试=范围。createTest(Thread.currentThread())。getStackTrace()1。getM

  • 在我的pom.xml我创建了不同的配置文件烟雾和回归测试使用cucumber框架。使用下面的maven命令运行测试。以下是烟雾测试的例子: 测试运行正常,但即使我提供了,它也不会生成报告。我为cucumber使用了一个常见的运行类,所以我不能将文件名作为注释。 以下是pom.xml配置: