allure简介

news2025/7/17 17:14:37

allure介绍

allure是一个轻量级,灵活的,支持多语言的测试报告工具

多平台的,奢华的report框架

可以为dev/qa提供详尽的测试报告、测试步骤、log

也可以为管理层提供high level统计报告

java语言开发的,支持pytest,javaScript,PHP等

可以集成到jenkins

Allure 报告生成的原理

Allure 报告是基于标准的 xUnit 结果输出,再添加补充数据而生成的,其报告的生成基于如下两个步骤。

1、在测试执行期间,一个名为 Adapter 的小型 library 被连接到测试框架中,并将所有测试执行的信息保存到 XML 文件中。对于大多数编程语言下的流行测试框架(例如 python 语言中的 pytest,Java 中的 jUnit 等),Allure 都默认为其提供了 Adapter。

2、获取 XML 文件后,Allure 会将这些 XML 文件转换为 HTML 报告。这一步骤可以通过持续集成系统的 Allure 插件,或者命令行命令实现。

环境安装

前提:安装java环境(建议安装JDK1.8版本,此处不展开说明)

安装allure

下载地址

https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/

下载完成后,解压zip包放到电脑非中文目录下,然后将文件夹中的bin目录配置到环境变量path中

验证:

配置完成后,重新打开dos窗口

执行命令allure --version,查看版本信息

常用参数

一、查看allure 命令的帮助文档

allure -h

allure 命令的语法格式

allure [options] [command] [command options]

options 列表

options: --help 命令行帮助文档 -q, --quiet 切换至安静模式 Default: false -v, --verbose 切换至冗长模式 Default: false --version 版本信息 Default: false

command 列表

generate serve open plugin

二、generate 命令行参数

作用

生成 allure 的html 报告

语法格式

generate [options] allure结果目录

【注】:allure 结果目录就是运行 pytest 命令时--alluredir 跟的那个目录: pytest -sq --alluredir= ./allure

命令选项

选项 描述

-c , --clean 删除allure报告生成的目录,就是-○跟的目录

--config allure命令行配置路径,如果指定会覆盖--profile和--configDirectory

--configDirectory allure命令行配置目录

--profile allure命令行配置文件

-o, --report-dir,--output 生成allure报告的目录

默认:执行命令当前目录下的 allure-report

没有目录则自动生成

最常用的就是 -o 与 -c 两个命令行参数。

三、open 命令行参数:结合generate 命令行参数一起使用

作用

打开已经生成的 allure 测试报告,就是打开 generate 命令生成的报告。

语法格式

open [options] allure报告目录

【注】:allure 报告目录就是运行 allure generate 命令时-o 跟的那个目录: allure generate -o ./allure-report

命令选项

选项 描述

-h,--host 该host将用于启动报告的Web服务器

-p,--port 该port将用于启动报告的Web服务器

四、serve 命令行参数

作用

启动 allure 服务,打开 allure 报告。【区分与open命令行参数的区别】

语法格式

serve [options] allure结果目录

【注】:allure 结果目录就是运行 pytest 命令,--alluredir 跟的那个目录: pytest -sq --alluredir= ./allure

命令选项

选项 描述

--config allure命令行配置路径,如果指定会覆盖--profile和--configDirectory

--configDirectory allure命令行配置目录

--profile allure命令行配詈文件

-h , --host 该host将用于启动报告的Web服务器

-p , --port 该port将用于启动报告的Web服务器

allure的执行

在测试执行期间收集结果

pytest [测试文件] -s -q --alluredir=./result/ (--alluredir这个选项,用于指定存储测试结果的路径)

python项目下 安装allure

result下生成中间结果

查看测试报告:

方式一:

测试完成后,查看实际报告,在线看报告,会直接打开默认浏览器展示当前报告

allure serve ./result/ (注意这里的serve书写)

使用管理员方式运行即可解决

方式二:

从结果生成报告,这是一个启动tomcat的服务。需要两个步骤,生成报告,打开报告

生成报告:

allure generate ./result/ -o ./report --clean (注意:覆盖路径加--clean)

两种方式的区别:

①第一种方式是将allure测试报告的原始数据(xml/json/text/attach等文件)直接在浏览器打开allure测试报告;而不在本地生成任何文件。

②第二种方式是首先在本地生成allure测试报告。然后在使用命令在浏览器打开allure测试报告。【此时allure测试报告原始数据仍然存在,而且会生成一个生成后的allure测试报告目录】

第二种方式支持直接在pycharm中选择浏览器打开 index.html 同样可以看到allure测试报告。【第一种方式不生成 index.html ,只能通过 allure server 打开测试报告】;但是如果在使用generate的方式生成allure测试报告之后,需要将此报告展示给其他人观看,同样需要 allure open ./allure-report 开启一个web服务供其他主机查看。

打开报告:

allure open -h 127.0.0.1 -p 8883 ./report/

allure合并测试报告

方式一

allure serve ./result1 ./result2 ./result3

方式二

allure generate -c -o ./report ./result1 ./result2 ./result3

allure open ./report

allure pytest报告中添加用例描述

使用方法

参数值

参数说明

@allure.epic()

epic描述

定义项目、当存在多个项目时使用

@allure.feature()

模块名称

用例按照模块区分,存在多个模块时使用

@allure.story()

用例名称

用例的描述

@allure.title()

用例标题

用例标题

@allure.testcase()

用例相关链接

自动化用例对应的功能用例存放系统的地址

@allure.issue()

缺陷地址

对应缺陷管理系统里面的缺陷地址

@allure.description()

用例描述

对测试用例的详细描述

@allure.step()

操作步骤

测试用例的操作步骤

with allure.step()

@allure.severity()

用例等级

blocker(阻塞)、critical(严重)、normal(一般)、minor(次要)、trivial(轻微)

@allure.link()

定义连接

用于定义一个需要在测试报告中展示的连接

@allure.attachment()

附件

添加测试报告附件

演示实例

import allure
import pytest


@allure.feature("演示实例")
class Testdome:
    a = ["1", "2", "3"]

    # 参数化,ids表示起别名
    @allure.story("测试演示1")
    @pytest.mark.parametrize("sum", a, ids=["test1", "test2", "test3"])
    def test_demo(self, sum):
        with allure.step("步骤1"):
            print(sum)
        with allure.step("步骤2"):
            print("测试步骤展示")

    @allure.severity(allure.severity_level.BLOCKER)
    @allure.story("测试演示2")
    @allure.title("测试标题显示")
    #@allure.link('https://www.baidu.com', name="百度地址")
    @allure.issue('https://workbench.ctbiyi.com/tw/project', "缺陷地址")
    @pytest.mark.demo1
    def test_demo1(self):
        pass

测试报告中添加附件

方式一

allure.attach(body, name, attachment_type, extension)

参数解释:

  • body :要写入附件的内容;

  • name :附件名字;

  • attachment_type :附件类型,是 allure.attachment_type 其中的一种;

  • extension :附件的扩展名;

实例演示

@allure.severity(allure.severity_level.CRITICAL)
@allure.issue('https://workbench.ctbiyi.com/tw/project', "缺陷地址")
@pytest.mark.demo2
def test_demo2(self):
    with allure.step("测试步骤1"):
        allure.attach("这是一段文本测试信息", name="文本展示")
        print("测试添加附件")
    with allure.step("测试步骤2"):
        allure.attach(
            '<img id="s_lg_img" class="s_lg_img_gold_show" src="//www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png" width="270" height="129" onerror="this.src="https://dss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo/bd_logo1-66368c33f8.png";this.onerror=null;" usemap="#mp">',
            name="html展示",
            attachment_type=allure.attachment_type.HTML
        )
        pass

方式二

allure.attach.file(source, name, attachment_type, extension)

参数解释:

  • source :文件路径,相当于传一个文件;

  • name :附件名字;

  • attachment_type :附件类型,是 allure.attachment_type 其中的一种;

  • extension :附件的扩展名;

@allure.severity(allure.severity_level.CRITICAL)
@allure.issue('https://workbench.ctbiyi.com/tw/project', "缺陷地址")
@pytest.mark.demo2
def test_demo2(self):
    with allure.step("测试步骤1"):
        allure.attach.file('C:/Users/韩寿帅/Desktop/测试截图.jpg', name="截图展示",
                           attachment_type=allure.attachment_type.JPG,
                           extension=".jpg")
        print("测试添加附件")
        pass

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/362684.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springcloud入门+组件使用

代码gitee地址&#xff1a;https://gitee.com/bing520/springcloud 集群 cluster&#xff1a; 同一中软件服务的多个服务节点共同为系统提供服务过程&#xff0c;称之为软件服务集群。 分布式 distribute&#xff1a; 不同软件集群共同为一个系统提供服务&#xff0c;这个系统…

图解LeetCode——剑指 Offer 48. 最长不含重复字符的子字符串

一、题目 请从字符串中找出一个最长的不包含重复字符的子字符串&#xff0c;计算该最长子字符串的长度。 二、示例 2.1> 示例 1: 【输入】 "abcabcbb" 【输出】 3 【解释】 因为无重复字符的最长子串是 "abc"&#xff0c;所以其长度为 3。 2.2> 示…

深入浅出深度学习Pytroch

本文将以通俗易懂的方式&#xff0c;深入浅出地为您揭开深度学习模型构建与训练的面纱&#xff1a; 深度学习数据data模型model损失函数loss优化optimizer可视化visualizer深度学习 数据data 模型model 损失函数loss 优化optimizer 可视化visualizer深度学习数据data模型m…

IP-GUARD离线的客户端如何更新策略?

在控制台上对指定客户端设置好策略后,在计算机树中找到该客户端右键-“策略导出”,导出相应的ipz格式的文件拿到离线的客户端上,客户端运行PolicyImportTool.exe工具,把ipz策略文件导入即可。

软件测试学习什么?好就业么

软件测试需要学习测试环境、网络环境、windows环境、数据库管理、编程技巧&#xff08;java编程设计&#xff0c;脚本语言&#xff0c;设计工具&#xff0c;XML编程、软件测试技术&#xff0c;测试理论&#xff0c;方法&#xff0c;流程&#xff0c;文档写作&#xff0c;测试工…

Blazor入门100天 : 身份验证和授权 (5) - 本地化资源

目录 建立默认带身份验证 Blazor 程序角色/组件/特性/过程逻辑DB 改 Sqlite将自定义字段添加到用户表脚手架拉取IDS文件,本地化资源freesql 生成实体类,freesql 管理ids数据表初始化 Roles,freesql 外键 > 导航属性完善 freesql 和 bb 特性 本节源码 https://github.com/…

FreeRTOS入门(01):基础说明与使用演示

文章目录目的基础说明系统移植基础使用演示数据类型和命名风格总结碎碎念目的 FreeRTOS是一个现在非常流行的实时操作系统&#xff08;Real Time Operating System&#xff09;。本文将介绍FreeRTOS入门使用相关内容&#xff0c;这篇是第一篇&#xff0c;主要介绍基础背景方面…

追梦之旅【数据结构篇】——详解C语言动态实现带头结点的双向循环链表结构

详解C语言动态实现带头结点的双向循环链表结构~&#x1f60e;前言&#x1f64c;预备小知识&#x1f49e;链表的概念及结构&#x1f64c;预备小知识&#x1f49e;链表的概念及结构&#x1f64c;带头结点的双向循环链表结构&#x1f64c;整体实现内容分析&#x1f49e;1.头文件编…

openpose在win下环境配置

1.下载OpenPose库 以下二选一进行下载源码 (1)git进行下载 打开GitHub Desktop或者Powershell git clone https://github.com/CMU-Perceptual-Computing-Lab/openpose cd openpose/ git submodule update --init --recursive --remote(2)在github上手动下载 由于下载环境问…

SpringCloud Alibaba 之Nacos集群部署-高可用保证

文章目录Nacos集群部署Linux部署docker部署&#xff08;参考待验证&#xff09;Nacos 集群的工作原理Nacos 集群中 Leader 节点是如何产生的Nacos 节点间的数据同步过程官方推荐用户把所有服务列表放到一个vip下面&#xff0c;然后挂到一个域名下面。http://nacos.com:port/ope…

go进阶(1) -深入理解goroutine并发运行机制

并发指的是同时进行多个任务的程序&#xff0c;Web处理请求&#xff0c;读写处理操作&#xff0c;I/O操作都可以充分利用并发增长处理速度&#xff0c;随着网络的普及&#xff0c;并发操作逐渐不可或缺 一、goroutine简述 在Golang中一个goroutines就是一个执行单元&#xff…

活动报名丨亚马逊科学家杨靖锋:复现和使用GPT3/ChatGPT的想法

2023年2月23日&#xff08;星期四&#xff09;11:00-12:00&#xff0c;由智源社区主办的「智源LIVE 第30期丨亚马逊科学家杨靖锋讲解『一些关于复现和使用GPT3/ChatGPT的想法』将在线举办&#xff0c;敬请期待。杨靖锋杨靖锋是来自亚马逊的科学家。他的研究主要集中在自然语言处…

ESP32设备驱动-深度休眠与唤醒

深度休眠与唤醒 文章目录 深度休眠与唤醒1、ESP32的休眠模式介绍1.1 ESP32的休眠模式1.2 RTC_GPIO1.3 唤醒源1.4 唤醒流程2、软件准备3、硬件准备4、定时器唤醒5、触摸唤醒6、外部中断唤醒6.1 外部中断ext0唤醒6.2 外部中断ext1唤醒6.3 多GPIO唤醒本文将详细在Arduino IDE中如何…

Spring MVC常用功能及注解

目录 一、什么是Spring MVC 1.1 Spring MVC定义 1.2 MVC定义 1.3 MVC和Spring MVC的关系 1.4 Spring MVC的作用 二、Spring MVC的使用 2.1 Spring MVC的创建和连接 2.1.1 RequestMapping注解 2.1.2 GetMapping注解 2.1.3 PostMapping注解 2.2 获取参数 2.2.1 获取单…

unbound部署DNS

dns的主要作用是将域名解析为ip地址然后在进行访问 安装配置dns准备3台服务器&#xff08;地址都要设置为静态的以便自己配置dns&#xff09;192.168.92.1 用户ip地址&#xff08;windows&#xff09; 192.168.92.132 dns服务器地址 192.168.92.133 web服务器地址 dns服务器 …

网络编程之TCP 网络应用程序开发流程

TCP 网络应用程序开发流程学习目标能够知道TCP客户端程序的开发流程1. TCP 网络应用程序开发流程的介绍TCP 网络应用程序开发分为:TCP 客户端程序开发TCP 服务端程序开发说明:客户端程序是指运行在用户设备上的程序 服务端程序是指运行在服务器设备上的程序&#xff0c;专门为客…

【沐风老师】3DMAX橱柜生成器工具使用教程

3DMAX橱柜生成器工具使用教程 【生成的橱柜模型】 3DMAX橱柜生成器&#xff08;Kitchen Cabinet Creator&#xff09;用于在3ds Max中自动制作橱柜模型。是需要频繁设计厨房、家具和室内设计的用户的理想工具插件&#xff0c;也是所有希望通过点击几下鼠标来填充一些空白空间的…

游戏服务器算法-AOI九宫格python实现

将空间按照一定的方法进行分割&#xff0c;例如根据AOI范围的大小将整个游戏世界切分为固定大小的格子。当游戏物体位于场景的时候&#xff0c;根据坐标将它放入特定的格子中。 例如玩家1在位置7中&#xff0c;如果游戏内的AOI的范围为1个格子。当我们需要获取这个玩家周围的AO…

第九章 - 多表查询(join,left join 等),合并查询(union union all),子查询

第九章 - 多表查询&#xff08;join&#xff0c;left join 等&#xff09;&#xff0c;合并查询&#xff08;union & union all&#xff09;&#xff0c;子查询交叉链接&#xff08;笛卡尔积&#xff09;内连接查询外连接查询左链接&#xff1a; left join右链接&#xff1…

python3遍历目录的三种方法浅谈

日期&#xff1a;2023年2月22日 作者&#xff1a;Commas 签名&#xff1a;(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释&#xff1a;如果您觉得有所帮助&#xff0c;帮忙点个赞&#xff0c;也可以关注我&#xff0c;我们一起成长&#xff1b;如果有不对的地方&#xf…