测试完成后自动生成诱惑报告

时间:2015-07-20 08:32:29

标签: maven selenium testng allure

我试图找出在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>

3 个答案:

答案 0 :(得分:6)

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

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

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

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

答案 1 :(得分:1)

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

第2步:添加了以下代码。

//它将生成“魅力报告”文件夹。   新的AllureReportBuilder(“ 1.5.4”,新的File(“ target / allure-report”))。unpackFace();   新的AllureReportBuilder(“ 1.5.4”,新的文件(“ target / allure-report”))。processResults(新   File(“ target / allure-results”));

答案 2 :(得分:0)

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

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

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

  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 方法中。在开始方法上,请粘贴下面的代码以删除旧的诱惑结果。 FileUtils.deleteDirectory(new File("target/allure-results"));

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