Allure2是一个开源测试报告框架,能够生成简洁美观的自动化测试报告输出

简介

Allure是自动化测试报告框架,相比junit添加了许多功能,生成的报告更美观,支持多种编程语言,如Java, PHP, Ruby, Python, Scala and C#,支持命令行、Jenkins、Maven等方式生成报告

demo查看

运行过程

Allure生成报告分成两个阶段

  • 第一步,测试执行阶段

    附加到测试框架的称为适配器adapter的小型库将有关已执行测试的信息保存到XML文件中,这些库支持主流的编程语言Java,PHP,Ruby,Python,Scala,C#等

    以Java来说,支持junit4、junit5、TestNG、Cucumbere JVM、Selenide

  • 第二步,生成报告阶段

    XML文件将转换为HTML报告。这可以通过命令行工具,CI插件或构建工具来完成

安装

安装Windows版本

  1. Github或者Maven仓库下载最新版

  2. 解压,将解压后的路径配置到系统环境变量,新建系统变量,名称为ALLURE_HOME,值为解压后的路径,如D:\Program Files\allure-2.9.0并把%ALLURE_HOME%\bin添加到path中,注意使用英文分号和其它变量值隔开

    ALLURE_HOME D:\Program Files\allure-2.9.0
    Path %ALLURE_HOME%\bin
    
  3. 验证安装

    $ allure --version
    2.9.0
    

生成报告

生成报告

在生成报告之前,需要运行测试以获取一些基本的测试结果数据,测试结果数据可以通过添加Allure库后执行测试生成的测试结果数据,后面会提到。另外,测试结果也可以由流行的测试框架生成的junit样式的xml报告,Maven生成的junit和testNG报告数据一般在target\surefire-reports目录下,Allure根据这些报告来生成新的测试报告

  • 从Allure结果数据生成报告,需要添加集成相应的库执行测试后才会生成测试结果到allure-results

    $ allure generate <PROJECT_PATH>\target\allure-results\
    
  • 从Junit测试结果生成报告,经过测试,以下路径都可以作为报告生成的来源数据,但是报告的详细程度都不如从target\allure-results生成的全面,生成的报告是比较简单的,只包含一些基本信息,缺少Allure的高级功能

    #这个命令生成报告过程中会报错,但是还是可以成功生成报告
    $ allure generate <PROJECT_PATH>\target\surefire-reports\
    $ allure generate <PROJECT_PATH>\target\surefire-reports\Suite01\
    $ allure generate <PROJECT_PATH>\target\surefire-reports\xml\
    $ allure generate <PROJECT_PATH>\target\surefire-reports\junitreports\
    

如果不指定报告的生成目标路径,生成的报告会保存在当前目录下的allure-report文件夹,可以使用-o参数指定生成报告目标路径

$ allure generate <directory-with-results> -o <directory-with-report>

打开已生成的报告

生成报告后,在系统默认浏览器打开报告

$ allure open <directory-with-report>

生成报告并打开报告

使用allure serve命令生成报告并启动一个本地服务器展示报告。这将从提供的路径中找到数据并在临时文件夹中生成报告,然后创建本地Jetty服务器实例,并在默认浏览器中打开测试报告,这个命令相当于allure generateallure open两个命令合到一起

$ allure serve /home/path/to/project/target/surefire-reports/

报告结构

  • 总览 概述页面显示了整个测试执行统计信息以及测试参数列表。带有仪表盘和小部件。可以拖动和配置
  • 类别 查看缺陷分类结果
  • 测试套 按套件和类分组的测试结果
  • 图表 展示测试用例执行情况百分比环形图、测试用例优先级条形图、测试用例耗时条形图、趋势图等
  • 时间刻度 可视化测试用例耗时情况
  • 功能 对于行为驱动的方法,根据Epic,Feature和Story标记对测试结果进行分组
  • 包 测试结果的树状布局,按不同的包进行分组

功能特性

  • 可以按故事stories 或功能features对测试进行分组、附加文件、并通过一组自定义步骤和其他功能分发断言

  • 标记不稳定测试,给方法或类添加@Flaky注解标记为不稳定的测试,标记的方法或类再测试报告中会显示一个炸弹图标

    @Flaky
    public void aTestWhichFailsFromTimeToTime {
       ...
    }
    
  • 添加环境信息 要向Environment小部件添加信息,只需在生成报告之前将environment.properties(或environment.xml)文件创建到allure-results目录

    environment.properties

    Browser=Chrome
    Browser.Version=63.0
    Stand=Production
    

    environment.xml

    <environment>
      <parameter>
          <key>Browser</key>
          <value>Chrome</value>
      </parameter>
      <parameter>
          <key>Browser.Version</key>
          <value>63.0</value>
      </parameter>
      <parameter>
          <key>Stand</key>
          <value>Production</value>
      </parameter>
    </environment>
    
  • 缺陷分类,默认将缺陷分成两类

    • 产品缺陷 由被测对象产生 failed test
  • 测试缺陷 由测试代码产生 broken test

    要自定义缺陷,请在生成报告之前将categories.json文件添加到allure-results目录

    categories.json

    [
    {
      "name": "Ignored tests", 
      "matchedStatuses": ["skipped"] 
    },
    {
      "name": "Infrastructure problems",
      "matchedStatuses": ["broken", "failed"]
      "messageRegex": ".*bye-bye.*", 
    },
    {
      "name": "Outdated tests",
      "matchedStatuses": ["broken"]
      "traceRegex": ".*FileNotFoundException.*", 
    },
    {
      "name": "Product defects",
      "matchedStatuses": ["failed"]
    },
    {
      "name": "Test defects",
      "matchedStatuses": ["broken"]
    }
    ]
    

参考

Allure官方文档