这样写Allure生成测试报告,学会直接涨薪5k

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文件所在的路径加入系统环境变量,再重启电脑,怎样加入环境变量这里不啰嗦,不知道的同学可以百度。

至此,环境搭建完成。

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

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

定制报告

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还有其他的常用特性,下篇文章我们再继续学习。

  总结:

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

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

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

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

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

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

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

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

相关文章

SpringBoot整合knife4j生成Api文档

一、介绍 先看效果 ①&#xff1a;Swagger 介绍 Swagger 是一个规范和完整的框架&#xff0c;用于生成、描述、调用和可视化 RESTful 风格的 Web 服务(https://swagger.io/)。 它的主要作用是&#xff1a; 使得前后端分离开发更加方便&#xff0c;有利于团队协作 接口的文档…

Doris-集群部署(四)

创建目录并拷贝编译后的文件 1&#xff09;创建目录并拷贝编译后的文件 mkdir /opt/module/apache-doris-0.15.0 cp -r /opt/software/apache-doris-0.15.0-incubating-src/output /opt/module/apache-doris-0.15.02&#xff09;修改可打开文件数&#xff08;每个节点&#x…

oracle数据库巡检常见脚本-系列三

简介 作为数据库管理员&#xff08;DBA&#xff09;&#xff0c;定期进行数据库的日常巡检是非常重要的。以下是一些原因&#xff1a; 保证系统的稳定性&#xff1a;通过定期巡检&#xff0c;DBA可以发现并及时解决可能导致系统不稳定的问题&#xff0c;如性能瓶颈、资源利用率…

TIDB基础

TIDB整个逻辑架构跟MYSQL类似&#xff0c;如下&#xff1a; TIDB集群&#xff1a;相当于MYSQL的数据库服务器&#xff0c;区别是MYSQL数据库服务器为单进程的&#xff0c;TIDB集群为分布式多进程的。 数据库&#xff1a;同MYSQL数据库&#xff0c;数据库属于集群&#xff0c;…

VM CentOS7安装ffmpeg

项目中涉及给视频添加水印&#xff0c;使用到了ffmpeg&#xff0c;windows系统可直接使用&#xff0c;Linux需要手动编译完成ffmpeg后才可正常使用。 配置yum源: 备份原repo文件 cd /etc/yum.repos.d/mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.r…

编写自己的CA和TA与逆向

参考内容《手机安全和可信应用开发》 https://note.youdao.com/s/MTlG4c1w 介绍 TA的全称是Trust Application&#xff0c; 即可信任应用程序。 CA的全称是Client Applicant&#xff0c; 即客户端应用程序。 TA运行在OP-TEE的用户空间&#xff0c; CA运行在REE侧。 CA执行时代…

前端 Ajax 技术有哪些优缺点?

Ajax&#xff08;Asynchronous JavaScript and XML&#xff09;是一种基于前端 JavaScript 技术的异步通信技术&#xff0c;可以在不刷新整个页面的情况下向服务器发送请求和接收响应&#xff0c;以实现动态加载内容和交互效果。下面是 Ajax 技术的优缺点&#xff1a; 优点&am…

css实现三行,溢出显示省略号(后有js实现逻辑)

css实现代码&#xff1a; .text-container {display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 3;overflow: hidden;text-overflow: ellipsis; }解释&#xff1a; 1.-webkit-box 和 -webkit-box-orient 属性将容器元素设置为一个垂直方向的弹性盒子&…

需求调研计划及用户需求调研单

1.目的 2.概述 3.需求调研计划 3.1调研目的 3.2调研范围 3.2.1.调研的职能范围 3.2.2.调研的业务范围 3.2.3.调研的地点范围 3.3调研方式 3.4调研阶段 3.5具体时间安排 软件开发全文档获取&#xff1a;点我获取 1、需求调研计划 2、用户需求调研单 项目名称 客…

C++ auto的作用

auto的作用 保护变量的值不被修改&#xff0c;防止意外的错误操作&#xff1b;声明函数参数为常量引用&#xff0c;以避免函数修改参数的值&#xff1b;声明类的成员函数为常量成员函数&#xff0c;以确保函数不修改对象的状态。 1 const关键字用于声明一个常量&#xff0c;…

【EI会议投稿】第九届电子技术和信息科学国际学术会议(ICETIS 2024)

第九届电子技术和信息科学国际学术会议&#xff08;ICETIS 2024&#xff09; The 9th International Conference on Electronic Technology andInformation Science&#xff08;ICETIS 2024&#xff09; ICETIS会议始于2016年&#xff0c;先后吸引众多来自国内外高等院校、科…

2023亚太杯数学建模竞赛C题新能源电动汽车数据分析与代码讲解

C题论文包括摘要、问题重述、问题分析、模型假设、符号说明、模型的建立和求解&#xff08;问题1模型的建立和求解、问题2模型的建立和求解、问题3模型的建立和求解、问题4模型的建立和求解、问题5模型的建立和求解&#xff09;、模型的评价等等&#xff0c; 视频讲解如下&…

组件库篇 | EUI | 按钮

组件库篇 | EUI | 按钮 前言 从本章开始,我将会一一演示所有组件所有函数的调用代码,以方便读者掌握组件的具体用法。但这并不意味着在实际使用中要用到所有的函数,请读者按需取用。 基本介绍 EUI提供了三种类型的按钮,如下: 常规按钮 Button文字按钮 TextButton图标按钮…

《洛谷深入浅出基础篇》P1113 杂物——DAG

上链接&#xff1a;P1113 杂务 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P1113 上题干&#xff1a; 题目描述 John 的农场在给奶牛挤奶前有很多杂务要完成&#xff0c;每一项杂务都需要一定的时间来完成它。比如&#xff1a;他们要将奶牛…

编写SQL语句,场景:从一张表中查询某字段是逗号分隔的集合值,需要遍历集合内每个值,将其作为条件去查询另一张表,最终返回列表

目录 场景编写SQL分页获取该开票单号下的所有订单列表使用子查询和 in 字句使用 find_in_set 场景 从一张表中查询某字段是逗号分隔的集合值&#xff0c;需要遍历集合内每个值&#xff0c;将其作为条件去查询另一张表&#xff0c;最终返回列表 编写SQL 分页获取该开票单号下…

羊大师详解羊奶如何帮助控制血压

羊大师详解羊奶如何帮助控制血压 羊奶是一种珍贵的天然饮品&#xff0c;不仅具有丰富的营养成分&#xff0c;还被证实对血压具有调控作用。很多人在了解到羊奶的功效后&#xff0c;都对其与血压之间的关系产生了浓厚的兴趣。接下来&#xff0c;小编羊大师将为大家详细介绍羊奶…

Linux基本命令与系统题目

1.linux 2.6.* 内核默认支持的文件系统有哪些&#xff1f;[多选] A.ext3 B.ext2 C.ext4 D.xfs E.ufs 2.linux查看cpu占用的命令是什么&#xff1f; A.top B.netstat C.free D.df 3.在Linux系统中, 为找到文件try_grep含有以a字母为行开头的内容, 可以使用命令&…

算法复杂度分析

文章目录 有数据范围反推算法复杂度以及算法内容一般方法递归 有数据范围反推算法复杂度以及算法内容 c一秒可以算 1 0 7 10^7 107~ 1 0 8 10^8 108次 一般方法 看循环 有几层循环就可以初步分析O( n i n^i ni) 双指针算法除外O(n) 递归 公式法 根据公式的形式&#xff0…

ARM 汇编基础

我们在学习 STM32 的时候几乎没有用到过汇编&#xff0c;可能在学习 UCOS 、 FreeRTOS 等 RTOS 类操作系统移植的时候可能会接触到一点汇编。但是我们在进行嵌入式 Linux 开发的时候是绝 对要掌握基本的 ARM 汇编&#xff0c;因为 Cortex-A 芯片一上电 SP 指针还…

关于前端上传

类似于 上面的传参form-data形式&#xff0c;第一个参数为上传的文件&#xff0c;第二个参数为json格式