测试完成后自动构建魅力报告

Automatically build allure report after test completion

我想弄清楚如何在我的 TestNG 套件完成后自动构建魅力报告。我知道可以在测试后通过 运行 mvn site 手动创建报告,但是如果可以自动生成报告就太好了。下面是我的 pom.xml

的诱惑配置
                <properties>
                  <testng.congig>${selenium.suite}</testng.congig>
                  <aspectj.version>1.7.4</aspectj.version>
                  <allure.version>1.4.3</allure.version>
                </properties>

              <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.14</version>
                <configuration>
                    <testFailureIgnore>false</testFailureIgnore>
                    <argLine>
                        -javaagent:${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar
                    </argLine>
                    <suiteXmlFiles>
                        <suiteXmlFile>target\test-classes${testng.congig}</suiteXmlFile>
                    </suiteXmlFiles>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.aspectj</groupId>
                        <artifactId>aspectjweaver</artifactId>
                        <version>${aspectj.version}</version>
                    </dependency>
                </dependencies>
            </plugin>

            <dependency>
              <groupId>ru.yandex.qatools.allure</groupId>
              <artifactId>allure-testng-adaptor</artifactId>
              <version>${allure.version}</version>
           </dependency>

           <reporting>
             <excludeDefaults>false</excludeDefaults>
             <plugins>
              <plugin>
                 <groupId>ru.yandex.qatools.allure</groupId>
                 <artifactId>allure-maven-plugin</artifactId>
                 <version>{latest.version}</version>
               </plugin>
             </plugins>
           </reporting>

不同生命周期中的测试执行和网站生成运行。

默认生命周期与站点生命周期不同,请参阅https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html

您可以做的只是链接命令:例如mvn install sitemvn deploy site-deploy 如果您打算在某个地方提供该站点。 这将 运行 测试然后执行站点生成。

maven 目标与该生命周期中的一个阶段相关。 mvn package 将执行绑定到其中一个阶段的所有插件,直到 package 阶段。由于站点生成有其自己的生命周期,因此我不会将插件执行绑定到默认生命周期的阶段之一。报告插件通常依赖于完成的构建。

第 1 步。将依赖项 Allure Builder Reporter 添加到 pom.xml https://mvnrepository.com/artifact/ru.yandex.qatools.allure/allure-report-builder/2.1

第 2 步:添加此代码:

// It will generate the Allure Report folder.
  new AllureReportBuilder("1.5.4", new File("target/allure-report")).unpackFace();
  new AllureReportBuilder("1.5.4", new File("target/allure-report")).processResults(new 
  File("target/allure-results"));

自动生成魅力报告。 请按照以下步骤操作:

  1. 添加Allure命令行对2.8.1版本的依赖 [https://mvnrepository.com/artifact/io.qameta.allure/allure-commandline/2.8.1][1]

  2. 在 src/test/resources 下创建 allure.properties 文件并设置以下值 allure.results.directory=target/allure-results 这意味着,当诱惑结果在目标文件夹下生成时

  3. 复制下面的代码并相应地使用。

    import io.qameta.allure.Extension;
    import io.qameta.allure.ReportGenerator;
    import io.qameta.allure.allure1.Allure1Plugin;
    import io.qameta.allure.allure2.Allure2Plugin;
    import io.qameta.allure.category.CategoriesPlugin;
    import io.qameta.allure.category.CategoriesTrendPlugin;
    import io.qameta.allure.context.FreemarkerContext;
    import io.qameta.allure.context.JacksonContext;
    import io.qameta.allure.context.MarkdownContext;
    import io.qameta.allure.context.RandomUidContext;
    import io.qameta.allure.core.*;
    import io.qameta.allure.duration.DurationPlugin;
    import io.qameta.allure.duration.DurationTrendPlugin;
    import io.qameta.allure.environment.Allure1EnvironmentPlugin;
    import io.qameta.allure.executor.ExecutorPlugin;
    import io.qameta.allure.history.HistoryPlugin;
    import io.qameta.allure.history.HistoryTrendPlugin;
    import io.qameta.allure.idea.IdeaLinksPlugin;
    import io.qameta.allure.influxdb.InfluxDbExportPlugin;
    import io.qameta.allure.launch.LaunchPlugin;
    import io.qameta.allure.mail.MailPlugin;
    import io.qameta.allure.owner.OwnerPlugin;
    import io.qameta.allure.prometheus.PrometheusExportPlugin;
    import io.qameta.allure.retry.RetryPlugin;
    import io.qameta.allure.retry.RetryTrendPlugin;
    import io.qameta.allure.severity.SeverityPlugin;
    import io.qameta.allure.status.StatusChartPlugin;
    import io.qameta.allure.suites.SuitesPlugin;
    import io.qameta.allure.summary.SummaryPlugin;
    import io.qameta.allure.tags.TagsPlugin;
    import io.qameta.allure.timeline.TimelinePlugin;
    import java.nio.file.Path;
    import java.nio.file.Paths;
    
    
    private void onGenerateAllureReport() {
            Runtime.getRuntime().addShutdownHook(new Thread() {
                public void run() {
                    try {
                        final List<Extension> extensions = Arrays.asList(new JacksonContext(), new MarkdownContext(), new FreemarkerContext(), new RandomUidContext(), new MarkdownDescriptionsPlugin(), new RetryPlugin(), new RetryTrendPlugin(), new TagsPlugin(), new SeverityPlugin(), new OwnerPlugin(), new IdeaLinksPlugin(), new CategoriesPlugin(), new CategoriesTrendPlugin(), new HistoryPlugin(), new HistoryTrendPlugin(), new DurationPlugin(), new DurationTrendPlugin(), new StatusChartPlugin(), new TimelinePlugin(), new SuitesPlugin(), new TestsResultsPlugin(), new AttachmentsPlugin(), new MailPlugin(), new InfluxDbExportPlugin(), new PrometheusExportPlugin(), new SummaryPlugin(), new ExecutorPlugin(), new LaunchPlugin(), new Allure1Plugin(), new Allure1EnvironmentPlugin(), new Allure2Plugin(), new ReportWebPlugin());
                        Configuration configuration = (new ConfigurationBuilder()).fromExtensions(extensions).build();
                        Path resultDi = Paths.get("target/allure-results");
                        Path outDir = Paths.get("target/allure-report");
                        new ReportGenerator(configuration).generate(outDir, resultDi);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });
        }~~~
    
    
  4. 第一种使用方法-实现SuiteInializer Listner并粘贴代码onFinish方法。在 Start Method 上,请粘贴下面的代码以删除旧的 allure 结果。 FileUtils.deleteDirectory(new File("target/allure-results"));

  5. 第二种方式:可以用黄瓜钩