【问题标题】:How to generate separate test-output folder with timestamp?如何使用时间戳生成单独的测试输出文件夹?
【发布时间】:2017-03-08 20:56:21
【问题描述】:

我正在使用 TestNG 来执行我的套件。但是,每次运行后都会覆盖 test-output 文件夹。我想生成一个带有时间戳的单独测试输出文件夹。我正在使用 Maven 来构建项目。有什么方法可以实现吗?

【问题讨论】:

  • 为什么要生成带有时间戳的单独测试输出文件夹?它会创建更多重复文件。为什么不拥有带有时间戳的电子邮件报告文件?

标签: java maven selenium-webdriver testng


【解决方案1】:

您可以使用自己的逻辑覆盖默认报告器。例如,SuiteHTMLReporter:

public class MySuiteHTMLReporter extends SuiteHTMLReporter {
  @Override
  void generateReport(java.util.List<XmlSuite> xmlSuites,
                    java.util.List<ISuite> suites,
                    java.lang.String outputDirectory) {
    String timestamp = ...
    super.generateReport(xmlSuites, suites, outputDirectory + "-" + timestamp);
  }
}

您可以对其他记者执行相同的操作,并且不要忘记禁用它们(并启用您的)。

【讨论】:

    【解决方案2】:

    您可以尝试在您的测试中实现一个驱动程序(比如说Driver.java),它可以用来启动您的测试(测试执行的mainClass)。

    这个类还可以有一个方法来解析testNG.xml文件以定义Test类,并且对于每个这样的测试,您可以迭代执行以下语句块 -

    TestNG testNG = new TestNG();
    // add listeners if needed
    testNG.setCommandLineSuite(<yourXmlSuitePath>); // path to testNG.xml file
    testNG.setOutputDirectory(<yourOutputDir>); // timestamped directory to specify
    testNG.run();
    

    或者另一种方法是在您的套件的@AfterAll 方法中创建一个带时间戳的文件夹(假设为20170309),并使用maven-resources-plugin 进行配置以将您的资源移动到创建的文件夹中。这也可以通过其他方式完成,您可以在clean 阶段之前复制并移动先前的执行结果,并继续执行测试以覆盖现有报告。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-09
      • 2020-09-28
      • 1970-01-01
      相关资源
      最近更新 更多