Allure + JUnit5


Allure 介紹

什么是 Allure ?

  • Allure 框架是一個靈活的、輕量級的、支持多語言的測試報告工具,它不僅以 Web 的方式展示了簡介的測試結果,而且允許參與開發過程的每個人可以從日常執行的測試中,最大限度地提取有用信息。
  • Allure 是由 Java 語言開發的,支持 Pytest,JaveScript、PHP、Ruby 等。
  • 可以集成到 Jenkins。
  • 可以為 dev/qa 提供詳盡的的測試報告、測試步驟、log,也可以為管理層提供 high level 統計報告。
    • 從 DEV/QA 的角度來看,Allure 提供了詳盡的測試報告,比如簡化了常見缺陷的統計;失敗的測試可以分為 bug 和被中斷的測試;還可以配置日志、步驟、fixture、附件、計時、執行歷史;以及與 TMS、BUG 管理系統、Jenkins 集成等。所以,通過以上配置,所有負責的開發人員和測試人員可以盡可能地掌握測試信息。
    • 從管理者的角度來看,Allure 提供了一個清晰的“大圖”,即 High Level 的統計報告,其中包括已覆蓋的特性、缺陷聚集的位置、執行時間軸的外觀以及許多其他方便的事情。Allure 的模塊化和可擴展性保證了你總是能夠對某些東西進行微調,使得 Allure 更適合你。

Allure 測試報告-官網

首頁概覽:

image

用例詳情頁:

image

Allure 環境安裝

  1. 安裝 Java(推薦 1.8 版本),配置 JAVA 環境變量
  2. Allure2 工具下載地址
    • mac/linux: 下載 tar
    • windows: 下載 zip
  3. 解壓后將 bin 目錄加入 PATH 環境變量
  4. 環境驗證:allure --version

Allure 常用命令

命令格式allure [option] [command] [command options]

  • allure --help:幫助
  • allure --version:查看版本信息
  • allure serve <測試結果數據目錄>:生成在線版本的測試報告(allure2 ⼯具創建本地 jetty 服務器實例)
  • allure generate <測試結果數據目錄,默認為 ./allure-results> -o 報告輸出目錄 (默認為 ./allure-report)

示例:查看測試報告

  • 方式一:用於在本地渲染后對外展示結果
allure serve ./result/
  • 方式二:用於在本地渲染和查看結果
# 生成報告
allure generate ./result/ -o ./report/ --clean  # 注意:覆蓋路徑加 --clean

# 打開報告
allure open -h 127.0.0.1 -p 8883 ./report/  # 指定固定端口號,不指定則每次隨機開啟端口號

注意:/report/ 目錄中的 index.html 就是最終的結果頁面,但直接通過瀏覽器打開這個文件是看不到實際報告內容的,這是因為實際報告內容需要 allure 進行渲染后才能看到。


Allure 常用注解

image

五種用例級別划分:

  • BLOCKER("blocker"):阻塞缺陷(功能未實現,無法下一步)
  • CRITICAL("critical"):嚴重缺陷(功能點缺失)
  • NORMAL("normal"):一般缺陷(邊界情況,格式錯誤)
  • MINOR("minor"):次要缺陷(界面錯誤與 UI 需求不符)
  • TRIVIAL("trivial"):輕微缺陷(必須項無提示,或者提示不規范)

Allure + JUnit5 示例

pom.xml 配置

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>AllureDemo</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter</artifactId>
            <version>RELEASE</version>
            <scope>test</scope>
        </dependency>
        <!-- 運行后自動在當前項目目錄生成測試結果目錄:allure-results -->
        <dependency>
            <groupId>io.qameta.allure</groupId>
            <artifactId>allure-junit5</artifactId>
            <version>2.13.6</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>1.7.25</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <!-- 解決allure測試報告中文亂碼問題 -->
        <aspectj.version>1.8.10</aspectj.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <build>
        <plugins>
            <!-- 該插件能夠在運行后自動在target目錄生成allure測試結果目錄 -->
            <plugin>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>3.0.0-M5</version>
                <configuration>
                    <includes>
                        <!-- 默認測試文件的命名規則:
                            "**/Test*.java"
                            "**/*Test.java"
                            "**/*Tests.java"
                            "**/*TestCase.java"
                            如果現有測試文件不符合以上命名,可以在 pom.xml 添加自定義規則
                        -->
                        <include>**/**.java</include>
                    </includes>
                    <!-- 在target目錄下自動生成原生的測試結果目錄:/allure-results -->
                    <systemProperties>
                        <property>
                            <name>allure.results.directory</name>
                            <value>${project.build.directory}/allure-results</value>
                        </property>
                        <property>
                            <name>allure.link.issue.pattern</name>
                            <value>https://example.org/issue/{}</value>
                        </property>
                    </systemProperties>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

測試代碼

import io.qameta.allure.*;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;

import java.io.FileInputStream;
import java.io.FileNotFoundException;

@Feature("功能名稱")
public class AllureTestDemo {

    @Test
    @Story("子功能1")
    @Severity(SeverityLevel.BLOCKER)
    @DisplayName("用例名稱:子功能1")
    @Description("靜態用例描述")
    @Step("靜態用例步驟1")
    @Link(name="靜態鏈接", url="https://www.baidu.com")
    public void demo1() {
        Allure.description("動態用例描述");
        Allure.link("動態鏈接", "https://www.baidu.com");
        Allure.step("動態用例步驟1:斷言");
        Assertions.assertTrue(1+1==2);
        Allure.step("動態用例步驟2:添加附件");
        // 添加文本展示
        Allure.addAttachment("My attachment", "My attachment content");
        // 添加截圖展示
        try {
            Allure.addAttachment("add picture", "image/png",
                new FileInputStream("C:\\Users\\juno\\Desktop\\timg.jpg"), ".jpg");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }

    @Test
    @Story("子功能2")
    @DisplayName("用例名稱:子功能2")
    @Severity(SeverityLevel.CRITICAL)
    public void demo2() {
    }

}

項目目錄下運行測試:

// 運行所有用例
mvn clean test
// 運行指定一個文件,或者多個文件,以逗號隔開
mvn clean package -Dtest=<文件名1> test
mvn clean package -Dtest=<文件名1>,<文件名2>,... test

測試結果數據保存目錄:target/allure-results/

  • mvn 的 clean 參數能夠每次重新生成 target 目錄結果。

測試報告展示

生成測試報告:allure serve target/allure-results

image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM