Allure生成测试报告这样生成,阿里p10都直呼牛逼

Allure是一个开源的测试报告生成框架,提供了测试报告定制化功能,相较于我们之前使用过pytest-html插件生成的html格式的测试报告,通过Allure生成的报告更加规范、清晰、美观。

pytest框架支持使用Allure生成测试报告,接下来让介绍pytest怎样结合Allure生成测试报告。

环境搭建

安装allure-pytest

步骤1需要先安装插件allure-pytest,可以理解为用于连接pytestallure,使它们可以结合使用。

安装命令:pip install allure-pytest

安装Allure

步骤2中需要安装Allure,需要去github下载,地址为:Releases · allure-framework/allure2 · GitHub

根据操作系统在最新版本中选择对应格式的安装文件进行下载,Windows系统选择allure-2.xx.x.zip下载,如下图所示:

下载后解压文件,并bin文件所在的路径加入系统环境变量,再重启电脑,怎样加入环境变量这里不啰嗦,不知道的同学可以百度。

至此,环境搭建完成。

定制报告

Allure提供了很多特性用于定制生成测试报告,脚本中加入这些特性可以对测试步骤进行详细的说明,且不会对测试代码逻辑产生影响。

接下来以在线购物平台的购物车功能模块下单模块简单举例说明,测试模块test_case.py代码如下:

import allure
import pytest
import os

@allure.step("登录获取token")
def get_token():
    print("请求登录接口获取token")

@allure.step("加入购物车")
def add_to_shopping_trolley():
    print("请求加入购物车接口")

@allure.step("查询我的购物车")
def get_shopping_trolley_goods():
    print("请求查询我的购物车接口")

@allure.step("清空购物车")
def empty_shopping_trolley():
    print("请求清空购物车接口")

@allure.step("下单")
def place_order():
    print("请求下单接口")


@allure.epic("xx在线购物平台接口测试")
@allure.feature("购物车功能模块")
class TestShoppingTrolley:

    @allure.story("商品加入购物车")
    @allure.title("正向用例--将库存数>0的商品加入购物车")
    @allure.description("校验库存数不为0的商品加入购物车是否正常")
    @allure.severity("critical")
    def test_add_goods(self):
        get_token()
        add_to_shopping_trolley()

    @allure.story("商品加入购物车")
    @allure.title("异常用例--将库存数=0的商品加入购物车")
    @allure.description("校验库存数为0的商品加入购物车是否提示正确的错误信息")
    @allure.severity("normal")
    def test_add_goods_error(self):
        get_token()
        add_to_shopping_trolley()

    @allure.story("查询购物车商品数量")
    @allure.title("查询购物车所有商品的总数量")
    @allure.description("校验查询购物车所有商品的总数量是否正常")
    @allure.severity("critical")
    def test_get_goods_quantity(self):
        get_token()
        add_to_shopping_trolley()
        get_shopping_trolley_goods()

    @allure.story("查询购物车商品数量")
    @allure.title("查询购物车单个商品的数量")
    @allure.description("校验查询购物车单个商品的数量是否正常")
    @allure.severity("critical")
    def test_get_goods_quantity(self):
        get_token()
        add_to_shopping_trolley()
        get_shopping_trolley_goods()

    @allure.story("清空购物车")
    @allure.title("加入商品后再清空购物车")
    @allure.description("校验清空购物车接口功能是否正常")
    @allure.severity("normal")
    def test_empty_shopping_trolley(self):
        get_token()
        add_to_shopping_trolley()
        empty_shopping_trolley()


@allure.epic("xx在线购物平台接口测试")
@allure.feature("下单模块")
class TestPlaceOrder:

    @allure.story("购物车下单")
    @allure.title("商品加入购物车再下单")
    @allure.description("校验清购物车下单功能是否正常")
    @allure.severity("critical")
    def test_place_order(self):
        get_token()
        add_to_shopping_trolley()
        place_order()

    @allure.story("立即购买下单")
    @allure.title("选择商品不加入购物车立即购买下单")
    @allure.description("校验立即购买下单功能是否正常")
    @allure.severity("critical")
    def test_order(self):
        get_token()
        place_order()

上面测试代码中使用了Allure的一些特性,为了更好的理解这些特性的使用,我们可以将测试脚本由上至下进行分层:

  1. 被测系统,即被测系统的描述,如在线购物商城
  2. 功能模块,一个被测软件系统包含一个或多个功能模块,如在线购物商城包含登录、购物车、下单、支付、发货等模块
  3. 使用场景,一个功能模块中包含一个或多个用户使用场景,如购物车模块包含加入购物车、修改数量、清空购物车的场景
  4. 测试用例,一个场景包含一条或多条测试用例,如加入购物车包含库存数>0 或 <0等测试用例
  5. 测试步骤,一条测试用例由一个或多个测试步骤构成,如将库存数>0商品加入购物车,测试步骤为:登录-->商品加入购物车

对照以上分层,我们再来理解代码中使用的这些Allure特性,如下:

  • @allure.epic(),用于描述被测软件系统

  • @allure.feature(),用于描述被测软件的某个功能模块

  • @allure.story(),用于描述功能模块下的功能点或功能场景,也即测试需求

  • @allure.title(),用于定义测试用例标题

  • @allure.description(),用于测试用例的说明描述

  • @allure.severity(),标记测试用例级别,由高到低分为 blocker、critical、normal、minor、trivial 五级

  • @pytest.allure.step(),标记通用函数使之成为测试步骤,测试方法/测试函数中调用此通用函数的地方会向报告中输出步骤描述

生成报告

生成Allure报告步骤

pytest中Allure生成测试报告需要经过如下两步操作:

  1. 首先,生成测试结果数据:

    # python代码执行
    pytest.main(['testcase/test_case.py', '-s', '-q', '--alluredir', './result'])
    # 命令行形式
    pytest testcase/test_case.py --alluredir ./result
    

    即运行testcase/目录下的测试用例,将测试结果以json文件的形式保存至当前目录下的result文件夹中。

    参数--alluredir用于指定测试结果保存路径。

  2. 然后,生成HTML格式的测试报告:

    # python代码执行
    os.system('allure generate ./result -o ./report --clean')
    # 命令行形式
    allure generate ./result -o ./report --clean
    

    即将当前目录下的result文件夹中的json数据,生成测试报告结果及index.html,并保存至当前目录下的report文件夹中。

    --clean表示先清除之前的测试报告,使用与否视情况自行选择。

执行代码

因此,执行模块run.py代码编写如下:

run.py

if __name__ == '__main__':
    pytest.main(['testcase/test_case.py', '-s', '-q', '--alluredir', './result'])
    os.system('allure generate ./result -o ./report --clean')

运行run.py,结果如下:

报告结果展示

运行run.py后,在run.py同级目录下新增了result文件夹,以及文件夹下的json文件,有多少条测试用例就生成多少个名称为xxxx-result.json的结果文件。

同样在run.py同级目录下新增了report文件夹,report文件夹中生成了一些文件,包括index.html,如下:

在浏览器中打开index.html,打开后首页如下:

选择点击Behaviors后,结果如下:

Allure报告默认语言为英文,可以选择中文,如下:

总结

可以把epic、feature、story理解为将测试用例按照功能模块进行分类,epic为一级类目,feature为二级类目,story为三级类目。

而title、description、severity、step等则用于测试用例自身相关的描述定义。

当然,Allure还有其他的常用特性,下篇文章我们再继续学习。

 自动化测试相关教程推荐:

2023最新自动化测试自学教程新手小白26天入门最详细教程,目前已有300多人通过学习这套教程入职大厂!!_哔哩哔哩_bilibili

2023最新合集Python自动化测试开发框架【全栈/实战/教程】合集精华,学完年薪40W+_哔哩哔哩_bilibili

测试开发相关教程推荐

2023全网最牛,字节测试开发大佬现场教学,从零开始教你成为年薪百万的测试开发工程师_哔哩哔哩_bilibili

postman/jmeter/fiddler测试工具类教程推荐

讲的最详细JMeter接口测试/接口自动化测试项目实战合集教程,学jmeter接口测试一套教程就够了!!_哔哩哔哩_bilibili

2023自学fiddler抓包,请一定要看完【如何1天学会fiddler抓包】的全网最详细视频教程!!_哔哩哔哩_bilibili

2023全网封神,B站讲的最详细的Postman接口测试实战教学,小白都能学会_哔哩哔哩_bilibili

  总结:

 光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。

如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步

在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。

我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,

测试开发视频教程、学习笔记领取传送门!!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue3 Element-Plus 一站式生成动态表单:简化前端开发流程

文章目录 1. 引言2. Vue3 和 Element-Plus 简介2.1 Vue32.2 Element-Plus 3. 动态表单的需求与挑战4. Vue3 和 Element-Plus 动态表单的优势4.1 Vue3的组合式API4.2 Element-Plus的表单组件 5. 一站式生成动态表单的实现5.1 准备工作5.2 创建动态表单组件5.3 使用动态表单组件 …

ELK实现日志收集

1.介绍 ELK是三个开源软件的缩写&#xff0c;分别表示&#xff1a;Elasticsearch , Logstash, Kibana , 它们都是开源软件。 Elasticsearch是个开源分布式搜索引擎&#xff0c;提供搜集、分析、存储数据三大功能。它的特点有&#xff1a;分布式&#xff0c;零配置&#xff0c…

Sprite Editor图片编辑器的使用_unity基础开发教程

Sprite Editor图片编辑器的使用 什么是Sprite Editor安装插件&#xff08;3D项目&#xff09;切片方式Automatic&#xff1a;自动切片Grid By Cell Size&#xff1a;按照像素大小进行切片Grid By Cell Count&#xff1a;按照个数进行切片Isometric Grid&#xff1a;等距网格切片…

Java---线程讲解(一)

文章目录 1. 进程和线程2. 多线程实现方式3. 设置和获取线程名称4. 线程优先级5. 线程控制6. 线程的生命周期 1. 进程和线程 1. 进程&#xff1a;是正在运行的程序&#xff0c;是系统进行资源分配和调用的基本单位。每一个进程都有它自己的内存空间和系统资源。 2. 线程&#x…

7.上传project到服务器及拉取服务器project到本地、更新代码冲突解决

1.上传project到SVN服务器 1.在eclipse中&#xff0c;从show view里调出SVN资源库视图 2.在SVN资源库窗口的空白位置右键选择新建资源库位置 3.填好服务器的地址 4.资源库导入成功,SVN资源库视图下出现导入的资源库 5.新建project 6.写好project的初始版本 7.右键project --&…

如何摆脱你是一个葡萄酒新手的身份?

刚接触葡萄酒的人可能会有一种模糊的感觉&#xff0c;即他们喜欢白葡萄酒、红葡萄酒或玫瑰红葡萄酒&#xff0c;但他们可能不知道如何描述为什么&#xff0c;也不理解必要的术语。 把葡萄酒词汇想象成类似于讨论食物是很有用的&#xff0c;它是甜的、酸的还是辣的&#xff1f;对…

Jmeter接口测试:jmeter导入和导出接口的处理

JMeter测试导入接口 利用Jmeter测试上传文件&#xff0c;首先可根据接口文档或者fiddler抓包分析文件上传的接口&#xff1b;如下图&#xff1a; 以下是我通过fiddler所截取的文件上传的接口 1、填写导入接口的信息 查看文件上传栏下的填写信息&#xff1a; 文件名称&#x…

Elasticsearch,Kibana集成,x-pack鉴权配置

Elasticsearch,Kibana集成 Java8环境部署[CentOS7] cd /usr/local/src wget https://repo.huaweicloud.com/java/jdk/8u201-b09/jdk-8u201-linux-x64.tar.gztar -xzvf jdk-8u201-linux-x64.tar.gz -C /usr/local#配置环境变量 vim /etc/profile #文末添加 export JAVA_HOME/us…

docker安装及简单使用(Linux版本)

文章目录 前言一、docker安装二、docker命令pull&#xff08;安装镜像&#xff09;images&#xff08;查看镜像&#xff09;run&#xff08;创建容器&#xff09;删除容器exec&#xff08;进入运行中的容器&#xff09;常用命令 总结如有启发&#xff0c;可点赞收藏哟~ 前言 ht…

路由跳转添加进度条

根据npm官网的步骤&#xff1a; 1.先安装nprogress npm install nprogress 2.引入nprogress和样式文件 import nprogress from nprogress import nprogress/nprogress.css 3.在前置守卫添加进度条的展示 //全局前置守卫 router.beforeEach((to: any, from: any, next: an…

算法训练 第十周

二、 删除有序数组中的重复项 II 1.双指针 我们在遍历整个数组的时候如果发现某个元素出现的次数超过了两次&#xff0c;就先记录下它出现的第三个位置&#xff0c;然后找到下一个与它不同的元素&#xff0c;从这个元素开始将其和其后面的所有元素都复制到之前记录的位置之后&…

C++ IO库

IO类 IO对象不能拷贝和赋值 iostream 表示形式的变化&#xff1a; 将100转换成二进制序列 然后格式化输出 x,y共用一块内存 输出的时候用不同的方式解析同一块内存 操作 格式化&#xff1a;内部表示转换为相应字节序列 缓存&#xff1a;要输出的内容放到缓存 编码转换&…

python爬虫-某公开数据网站实例小记

注意&#xff01;&#xff01;&#xff01;&#xff01;某XX网站逆向实例仅作为学习案例&#xff0c;禁止其他个人以及团体做谋利用途&#xff01;&#xff01;&#xff01; 第一步&#xff1a;分析页面和请求方式 此网站没有技巧的加密&#xff0c;仅是需要携带cookie和请求…

IntelliJ IDE 插件开发 | (二)UI 界面与数据持久化

系列文章 IntelliJ IDE 插件开发 |&#xff08;一&#xff09;快速入门 前言 在上一篇文章中介绍了在IDEA下开发、运行和安装插件的基本步骤&#xff0c;因此创建项目等基础步骤不再赘述&#xff0c;本文则开始介绍如何进行 UI 界面的开发以及相关数据的持久化存储&#xff…

安全测试工具,自动发现网站所有URL!

作为一个安全测试人员来说&#xff0c;首先要拿到网站所有url&#xff0c;然后根据拿到的url进行渗透测试进行漏洞挖掘。本文给大家介绍的是如何拿到一个网站所有的url。 深度爬取层级控制 现在我也找了很多测试的朋友&#xff0c;做了一个分享技术的交流群&#xff0c;共享了很…

集成开发环境 PyCharm 的安装【侯小啾python基础领航计划 系列(二)】

集成开发环境PyCharm的安装【侯小啾python基础领航计划 系列(二)】 大家好,我是博主侯小啾, 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔…

图灵测试:人工智能的终极挑战

图灵测试&#xff1a;人工智能的终极挑战 一、引言 在人工智能的发展历程中&#xff0c;图灵测试一直被视为一个重要的里程碑。这个由英国计算机科学家艾伦图灵提出的实验&#xff0c;旨在评估人工智能是否能够像人一样思考和表达&#xff0c;为人类与机器智能之间的界限设立了…

Python实现FA萤火虫优化算法优化随机森林分类模型(RandomForestClassifier算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 萤火虫算法&#xff08;Fire-fly algorithm&#xff0c;FA&#xff09;由剑桥大学Yang于2009年提出 , …

【征稿倒计时十天,ACM独立出版,有确定的ISBN号,ei检索稳且快】

2023 人工智能、系统与网络安全国际学术会议 (AISNS 2023&#xff09; 2023 International Conference on Artificial Intelligence, Systems and Network Security 由西南科技大学计算机科学与技术学院主办的2023人工智能、系统与网络安全国际学术会议 (AISNS 2023&#xff0…

C语言给定数字0-9各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意0不能做首位)

这个题目要求的输出是一串数字&#xff01;&#xff01;&#xff01; 不是下面&#xff1a;输入在一行中给出 10 个非负整数&#xff0c;顺序表示我们拥有数字 0、数字 1、……数字 9 的个数。整数间用一个空格分隔。10 个数字的总个数不超过 50&#xff0c;且至少拥有 1 个非…