前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >自动化测试报告必会神器Allure使用

自动化测试报告必会神器Allure使用

作者头像
软件测试君
发布2019-06-03 10:10:42
1.6K0
发布2019-06-03 10:10:42
举报
文章被收录于专栏:测试人生测试人生

下面分享一篇关于自动化测试报告的文章。

关于自动化测试报告:

之前用过testNG自带的测试报告、优化过reportNG的测试报告、extentreport、ZReport(大飞总原创),这些是我之前都用过的,也是在去年雯姐和我说过Allure2这个报告不错,一直没时间,正巧最近有用到,接触下发现确实是个神器。

Allure(已经有allure2了,小编用的就是allure2),生成的测试报告与上述对比,简直堪称完美!先上个测试报告的图表,给大家直观感受下:

下面让我们一起走进Allure的世界,跟上步伐,相信我这一切并不难

一、pom文件部分

代码语言:javascript
复制
  1<?xml version="1.0" encoding="UTF-8"?>
  2<project xmlns="http://maven.apache.org/POM/4.0.0"
  3         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5    <modelVersion>4.0.0</modelVersion>
  6
  7    <groupId>allure-demo</groupId>
  8    <artifactId>allure-demo</artifactId>
  9    <version>1.0-SNAPSHOT</version>
 10
 11    <properties>
 12        <allure.version>2.10.0</allure.version>
 13        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 14        <java.version>1.8</java.version>
 15        <aspectj.version>1.9.2</aspectj.version>
 16        <suiteXmlFile>src/test/resources/suite/test-moudle/testng.xml</suiteXmlFile>
 17    </properties>
 18
 19    <dependencies>
 20
 21        <dependency>
 22            <groupId>selenium-server-standalone</groupId>
 23            <artifactId>selenium-server-standalone</artifactId>
 24            <version>3.9.1</version>
 25        </dependency>
 26
 27        <dependency>
 28            <groupId>io.qameta.allure</groupId>
 29            <artifactId>allure-testng</artifactId>
 30            <version>${allure.version}</version>
 31            <scope>test</scope>
 32        </dependency>
 33
 34        <dependency>
 35            <groupId>org.hamcrest</groupId>
 36            <artifactId>hamcrest-all</artifactId>
 37            <version>1.3</version>
 38            <scope>test</scope>
 39        </dependency>
 40
 41        <dependency>
 42            <groupId>org.testng</groupId>
 43            <artifactId>testng</artifactId>
 44            <version>6.14.3</version>
 45        </dependency>
 46
 47        <dependency>
 48            <groupId>io.qameta.allure</groupId>
 49            <artifactId>allure-java-commons</artifactId>
 50            <version>2.10.0</version>
 51        </dependency>
 52    </dependencies>
 53    <build>
 54        <plugins>
 55            <plugin>
 56                <groupId>org.apache.maven.plugins</groupId>
 57                <artifactId>maven-compiler-plugin</artifactId>
 58                <version>3.3</version>
 59                <configuration>
 60                    <source>1.8</source>
 61                    <target>1.8</target>
 62                    <encoding>UTF-8</encoding>
 63                </configuration>
 64            </plugin>
 65            <plugin>
 66                <groupId>org.apache.maven.plugins</groupId>
 67                <artifactId>maven-surefire-plugin</artifactId>
 68                <version>2.22.1</version>
 69                <configuration>
 70                    <argLine>
 71                        -javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"
 72                    </argLine>
 73                    <suiteXmlFiles>
 74                        <!--该文件位于工程根目录时,直接填写名字,其它位置要加上路径-->
 75                        <suiteXmlFile>src/test/resources/testng.xml</suiteXmlFile>
 76                    </suiteXmlFiles>
 77                </configuration>
 78                <dependencies>
 79                    <dependency>
 80                        <groupId>org.aspectj</groupId>
 81                        <artifactId>aspectjweaver</artifactId>
 82                        <version>${aspectj.version}</version>
 83                    </dependency>
 84                </dependencies>
 85            </plugin>
 86        </plugins>
 87    </build>
 88    <reporting>
 89        <excludeDefaults>true</excludeDefaults>
 90        <plugins>
 91            <plugin>
 92                <groupId>io.qameta.allure</groupId>
 93                <artifactId>allure-maven</artifactId>
 94                <version>2.10.0</version>
 95                <configuration>
 96                    <reportVersion>${allure.version}</reportVersion>
 97                </configuration>
 98            </plugin>
 99        </plugins>
100    </reporting>
101</project>

二、安装插件

在Jenkins插件管理中,搜索Allure即可

三、安装Allure Commandline

安装完allure插件后,进入系统管理-->全局工具配置,安装Allure Commandline

保存即可

此时再通过Jenkins构建并执行测试代码后,就可以看到Allure的测试报告了。以上,完成了Allure的基本配置。

四、Allure用法

1、注解:

我只列举一些常用的注解,其他的可以自行去官网查阅

代码语言:javascript
复制
    //用例编号
    @TmsLink("562")
    //bug编号
    @Issue("4042")
    //bug严重等级,优先级,包含blocker, critical, normal, minor, trivial 几个不同的等级
    @Severity(SeverityLevel.TRIVIAL)
    //用例描述
    @Description("测试一个流程,用作回归冒烟测试")

添加@TmsLink, @Issue注解后,在allure report中会生成相应的链接,但是它是如何访问我们的缺陷管理系统以及用例管理系统给的呢,在官网文档有说明。

查看文档发现,需要有一个配置文件,将我们系统域名预先设置好,再将{}的内容使用注解进行替换,这样就能访问到我们想范文的连接了。但是官方并没有说明这个配置文件的具体配置,好在官方有一些简单的小demo可供产考;

这是官方的testng的demo地址:

https://github.com/allure-examples/allure-testng-example/tree/master/src/test/resources,可以看到它有一个文件名叫做allure.properties

这是文件的内容

代码语言:javascript
复制
allure.results.directory=target/allure-results
allure.link.issue.pattern=https://example.org/issue/{}
allure.link.tms.pattern=https://example.org/tms/{}

第一个应该是默认的输出路径,暂时未用到先不研究,将你需要访问的url替换就可以,比如:

代码语言:javascript
复制
allure.link.issue.pattern=http://jira.XXX.com/browse/{}
allure.link.tms.pattern=http://testlink.XXX.com/{}

这里需要注意一点,allure.properties的位置必须是跟你路径下的test同级否则会找不到这个文件;

我用的是idea创建的maven项目

最终效果如下:

2、自动截图

allure最吸引我的地方是,不用存到本地,它能将selenium的截图放到report中

第一步:写一个监听类,当执行失败自动截图

代码语言:javascript
复制
package com.allure.demo;

import io.qameta.allure.Attachment;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.testng.ITestResult;
import org.testng.TestListenerAdapter;

public class TestFailListener extends TestListenerAdapter {

    @Override
    public void onTestFailure(ITestResult result) {
        screenshot();
    }

    @Attachment(value = "screen shot",type = "image/png")
    public byte[]  screenshot(){
        byte[] screenshotAs = ((TakesScreenshot)GetDriver.driver).getScreenshotAs(OutputType.BYTES);
        return screenshotAs;
    }

}

第二步:在测试类上,添加Listeners的注解

代码语言:javascript
复制
package com.allure.demo;

import io.qameta.allure.*;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.testng.Assert;
import org.testng.annotations.*;

import java.util.concurrent.TimeUnit;

@Epic("百度查询功能测试")
@Feature("百度查询功能")
@Listeners(TestFailListener.class)
public class AllureDemo {

    static WebDriver driver;
    static final int MAX_TIMEOUT_IN_SECONDS = 5;

    @BeforeClass
    public static void beforeClass() throws Exception {
        driver = new GetDriver().getDriver();
        String url = "https://www.baidu.com/";
        driver.manage().window().maximize();
        driver.manage().timeouts().implicitlyWait(MAX_TIMEOUT_IN_SECONDS, TimeUnit.SECONDS);
        driver.get(url);
    }

    //用例编号
    @TmsLink("562")
    //bug编号
    @Issue("4042")
    //bug严重等级,优先级,包含blocker, critical, normal, minor, trivial 几个不同的等级
    @Severity(SeverityLevel.TRIVIAL)
    //用例描述
    @Description("测试一个流程,用作回归冒烟测试")
    /**
     *功能块,具有相同feature或astory的用例将规整到相同模块下,执行时可用于筛选
     */
    @Story("查询场景-正向查询功能")
    @Test(description = "验证百度查询功能", dataProvider = "testDemo")
    public void testDemo(String key) throws Exception {
        driver.findElement(By.id("kw")).clear();
        driver.findElement(By.id("kw")).sendKeys(key, Keys.ENTER);
        Thread.sleep(3000);
        Assert.assertEquals(driver.getTitle(), key + "_百度搜索");
        if (key.equals("java")){
            Assert.assertEquals(driver.getTitle(),"断言失败!");
        }
    }

    @AfterClass
    public static void tearDownAfterClass() {
        if (driver != null) {
            System.out.println("运行结束!");
            driver.quit();
        }
    }

    @DataProvider(name = "testDemo")
    public Object[][] testDemo() {
        return new Object[][]{
                {"软件测试君"},
                {"refain 博客园"},
                {"java"},
        };
    }

}

截图效如下图:

是不是很nice,还不动手试一试········

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 软件测试君 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 关于自动化测试报告:
  • 一、pom文件部分
  • 二、安装插件
  • 在Jenkins插件管理中,搜索Allure即可
  • 三、安装Allure Commandline
  • 四、Allure用法
  • 2、自动截图
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档