Pytest的测试报告——Allure

 一、html-report测试报告

html-report测试报告。是pytest下基本的测试报告。要使用pytest-html测试报告,就要确保python版本在3.6及以上即可。本身pytest所提供的测试结果汇总,是基于控制台的文本输出形式。

pytest-html是基于HTML格式实现的测试报告的结果记录。属于pytest下的插件。所以要调用的话,需要提前安装这个插件。

安装指令:

  • pip install pytest-html pip源自行添加

在实际的pytest运行过程中,如果需需要生成测试报告,则需要添加指令 --html=测试报告名称.html。

import pytest@pytest.fixture
def first():return 'a'
def test_function(first):print(first+'hcc')

直接运行也能得到日志报告,但是不够直观 ,可以运行:

pytest -s -v test_html_report.py --html=./report.html

得到html文件: 

注意:
默认生成html测试报告的指令 --html=测试报告.html,不会捕获页面所显示的日志信息。如果要捕获日志信息,则需要添加指令 --capture=sys

如果要将测试报告进行邮件或者其他途径的分享,需要添加指令--self-contained-html将测试报告的css样式直接加载到html文件之中,不再额外生成css样式文件夹。 


 二、Allure测试报告

Allure测试报告是自动化测试领域下的测试报告天花板。本身是适配到Python自动化、Java自动化都可以满足的一种测试报告。属于独立化的一个测试报告插件。

环境部署:

  • Allure安装:

    • 下载安装包,解压到指定路径,进入到allure的bin路径下,复制bin的完整路径,添加到系统环境变量的path之中

    • 启动cmd,运行allure --version指令,如果在控制台显示有allure版本信息则表示安装成功

  • allure-pytest安装:

    • pip install allure-pytest进行安装

2.1 mac下allure安装

方法一:使用终端
1、打开终端
                brew install allure
2、安装完成后验证是否成功
                allure --version

方法二:安装包+终端
1、下载allure安装包,tzg或者zip
                  https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/
2、解压安装包,放到合适的位置
3、打开终端

                vi ~/.bash_profile
4、回车按E,进入编辑页面,按“i”进入编辑状态
5、添加以下两行

                export PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
                export PATH=${PATH}:自己本地allure的bin目录的路径
6、按esc退出编辑状态,输入:wq退出编辑页
7、刷新配置文件

                source ~/.bash_profile
8、验证allure是否配置成功
               allure --version

2.2 allure的使用

Allure测试报告的生成:1. 安装allure测试报告2. pytest --alluredir 指令用于将测试结果的数据保存在allure结果之中3. allure serve ./allure_report这个指令是生成临时allure测试报告。并提供web服务以供访问生成的测试报告保存在用户的缓存临时文件夹下,路径无法修改4. allure generate ./allure_report -o ./report_allure这个指令是将allure采集的测试数据生成为完整的allure测试报告,保存在指定路径下。
import pytest@pytest.fixture
def first():return 'a'
def test_function(first):print(first+'hcc')

 运行指令:  pytest --alluredir ./allure_report 

将测试结果的数据保存在allure结果之中,同时生成一个测试报告文件。

 allure serve ./allure_report 这个指令是生成临时allure测试报告。并提供web服务以供访问。生成一个完整的测试报告。

因为pytest下的allure测试报告生成,需要调用allure指令,这个指令和pytest没有关系,所以想要一步实现数据的记录以及报告的生成,记得添加os.system()方法来调用allure指令。但是,可能allure指令调用会失败。

如果是通过指令运行,集成到pytest之中,生成allure测试报告的话,这个测试报告想要分享,可以在Jenkins中进行集成的方式来做分享(也就是通过链接进行分享的模式)。

如果想要关联持续集成,做到更加完整的自动化测试效果,可以通过allure来实现测试报告的生成。


三、Allure装饰器使用

在Allure测试报告之中,进行了非常详细的数据的展示,包括各种分类、图形化界面等。同时,对于自动化测试用例的执行,在Allure中也可以做到一定量的管理,让整个测试报告变得更加完整。

Allure如何更加美观地展示所有的测试内容呢?可以通过各类不同的装饰器来丰富测试报告相关信息。让整个报告看起来更加完整,易读,易理解。

  1. epic装饰器:用于定义整个测试的描述信息,可以理解为总的测试说明,如果输入的参数是相同的 例如: 当前执行了某一个系统的一个完整业务流程,通过不同的epic装饰器实现对不同的业务流程的总描述
  2. feature装饰器:用于定义到当前用例执行的功能模块的说明

  3. tory装饰器:对流程分支进行的定义与描述

  4. title装饰器:实现当前用例名称的定义

  5. escription装饰器:主要实现对用例的内容进行自定义的描述,也可以通过三引号的注释操作来实现同样的效果。需要注意为了代码的规范性,建议统一用一种方法

  6. step装饰器:用于显示测试的操作步骤。 装饰器形态的step可以对当前用例进行步骤的统一描述,无法实现对用例的所有步骤进行细化的处理                                             with allure.step('步骤描述')的方式可以实现对用例之中所有的不同操作步骤,进行细化的步骤描述,当出现问题的时候可以更加快速准确定位到出问题的点

3.1 epic装饰器

epic装饰器:用于定义整个测试的描述信息,可以理解为总的测试说明,如果输入的参数是相同的 例如: 当前执行了某一个系统的一个完整业务流程,通过不同的epic装饰器实现对不同的业务流程的总描述。

import pytest
import os
import allure@allure.epic("这是测试总说明")
def test_function01():print('这是1号测试用例')
@allure.epic("这是测试总说明")
def test_function02():print('这是2号测试用例')
@allure.epic("这是测试总说明")
def test_function03():print('这是3号测试用例')
@allure.epic("这是测试总说明1")
def test_function04():print('这是4号测试用例')
@allure.epic("这是测试总说明1")
def test_function05():print('这是5号测试用例')if __name__ == '__main__':pytest.main(['-s', '-v', '--alluredir=./allure_report'])os.system(r'allure generate ./allure_report -o ./report_allure --clean')

 查看测试报告:


3.2 feature装饰器

feature装饰器:用于定义到当前用例执行的功能模块的说明

@allure.epic("这是测试总说明")
@allure.feature('登录功能模块')
def test_function01():print('这是1号测试用例')@allure.epic("这是测试总说明")
@allure.feature('登录功能模块')
def test_function02():print('这是2号测试用例')@allure.epic("这是测试总说明")
@allure.feature('添加购物车功能模块')
def test_function03():print('这是3号测试用例')@allure.epic("这是测试总说明")
@allure.feature('商品详情功能模块')
def test_function04():print('这是4号测试用例')@allure.epic("这是测试总说明")
@allure.feature('支付功能模块')
def test_function05():print('这是5号测试用例')

查看测试报告:


3.3 story装饰器

story装饰器:对流程分支进行的定义与描述 

@allure.epic("这是测试总说明")
@allure.feature('登录功能模块')
@allure.story('实现登录的操作行为')
def test_function01():print('这是1号测试用例')@allure.epic("这是测试总说明")
@allure.feature('登录功能模块')
@allure.story('实现登录的操作行为')
def test_function02():print('这是2号测试用例')@allure.epic("这是测试总说明")
@allure.feature('添加购物车功能模块')
@allure.story('实现购物车添加操作行为')
def test_function03():print('这是3号测试用例')@allure.epic("这是测试总说明")
@allure.feature('商品详情功能模块')
@allure.story('实现商品属性的获取')
def test_function04():print('这是4号测试用例')@allure.epic("这是测试总说明")
@allure.feature('支付功能模块')
@allure.story('实现支付的操作行为')
def test_function05():print('这是5号测试用例')

 查看测试报告:


 3.4 title装饰器

 title装饰器:实现当前用例名称的定义

@allure.epic("这是测试总说明")
@allure.feature('登录功能模块')
@allure.story('实现登录的操作行为')
@allure.title('登录操作')
def test_function01():print('这是1号测试用例')@allure.epic("这是测试总说明")
@allure.feature('登录功能模块')
@allure.story('实现登录的操作行为')
@allure.title('验证账号')
def test_function02():print('这是2号测试用例')@allure.epic("这是测试总说明")
@allure.feature('添加购物车功能模块')
@allure.story('实现购物车添加操作行为')
@allure.title('添加购物车')
def test_function03():print('这是3号测试用例')@allure.epic("这是测试总说明")
@allure.feature('商品详情功能模块')
@allure.story('实现商品属性的获取')
@allure.title('选择商品属性')
def test_function04():print('这是4号测试用例')@allure.epic("这是测试总说明")
@allure.feature('支付功能模块')
@allure.story('实现支付的操作行为')
@allure.title('进行支付')
def test_function05():print('这是5号测试用例')

查看测试报告:


3.5 escription装饰器

escription装饰器:主要实现对用例的内容进行自定义的描述,也可以通过三引号的注释操作来实现同样的效果。

import pytest
import os
import allure@allure.epic("这是测试总说明")
@allure.feature('登录功能模块')
@allure.story('实现登录的操作行为')
@allure.title('登录操作')
@allure.description('实现用户的登录操作行为')
def test_function01():print('这是1号测试用例')@allure.epic("这是测试总说明")
@allure.feature('登录功能模块')
@allure.story('实现登录的操作行为')
@allure.title('验证账号')
@allure.description('对已登录登录进行账号的正确性验证行为')
def test_function02():print('这是2号测试用例')@allure.epic("这是测试总说明")
@allure.feature('添加购物车功能模块')
@allure.story('实现购物车添加操作行为')
@allure.title('添加购物车')
@allure.description('实现添加购物车操作行为')
def test_function03():print('这是3号测试用例')@allure.epic("这是测试总说明")
@allure.feature('商品详情功能模块')
@allure.story('实现商品属性的获取')
@allure.title('选择商品属性')
@allure.description('对测试商品的属性进行选择')
def test_function04():print('这是4号测试用例')@allure.epic("这是测试总说明")
@allure.feature('支付功能模块')
@allure.story('实现支付的操作行为')
@allure.title('进行支付')
@allure.description('实现对已选择的商品进行最终的支付处理')
def test_function05():print('这是5号测试用例')

查看测试报告:


3.6 step装饰器

 step装饰器:用于显示测试的操作步骤。 装饰器形态的step可以对当前用例进行步骤的统一描述,无法实现对用例的所有步骤进行细化的处理。

@allure.epic("这是测试总说明")
@allure.feature('登录功能模块')
@allure.story('实现登录的操作行为')
@allure.title('登录操作')
@allure.description('实现用户的登录操作行为')
@allure.step('进行用户的账号与密码输入')
def test_function01():print('这是1号测试用例')

 查看测试结果:

  with allure.step('步骤描述')的方式可以实现对用例之中所有的不同操作步骤,进行细化的步骤描述,当出现问题的时候可以更加快速准确定位到出问题的点

def test_function01():with allure.step('1.进行登录页的访问'):print('这是1号测试用例1')with allure.step('2.进行用户名称的输入‘):print('这是1号测试用例2')with allure.step('3.进行密码的输入'):print('这是1号测试用例3')with allure.step('4.进行登录按钮的点击'):print('这是1号测试用例4')

查看测试结果: 

         装饰器形态的step可以对当前用例进行步骤的统一描述,无法实现对用例的所有步骤进行细化的处理 。

        with allure.step('步骤描述')的方式可以实现对用例之中所有的不同操作步骤,进行细化的步骤描述,当出现问题的时候可以更加快速准确定位到出问题的点 。

        Allure测试用例等级管理(参考缺陷等级定义),所有的用例默认为normal级别。用例可以分为以下几个 等级:               

  • 1. blocker 阻塞缺陷(功能未实现,无法继续下一步操作)
  • 2. critical 严重缺陷
  • 3. normal 一般缺陷
  • 4. minor 次要缺陷
  • 5. trivial 轻微缺陷
  • 写法示例: 完整写法@allure.severity(allure.severity_level.BLOCKER)                                               简易写法 @allure.severity('critical')
  • 严重级别可以通过类来直接进行定义,定义的效果就是将整个类的所有测试用例定义为当前的级别,normal以下无法定义为类级别


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

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

相关文章

手机视频监控客户端APP如何实现跨安卓、苹果和windows平台,并满足不同人的使用习惯

目 录 一、手机视频监控客户端的应用和发展 二、手机视频监控客户端存在的问题 三、HTML5视频监控客户端在手机上实现的方案 (一)HTML5及其优点 (二)HTML5在手机上实现视频应用功能的优势 四、手机HTML5…

机器人相关知识

机器人学(Robotics) 一些基础概念 位姿 位姿位置姿态 位姿的表示 刚体 刚性物体是一组粒子的集合,其中任意两个粒子之间的距离保持固定,不受物体运动或施加在物体上的力的影响。 “完全不可变形”的物体就是刚体。 刚体位置 刚性连杆 …

2024年阿里云优惠活动清单_优惠代金券领取大全

阿里云服务器优惠活动大全包括:云服务器新人特惠、云小站、阿里云免费中心、学生主机优惠、云服务器精选特惠、阿里云领券中心等,活动上阿里云服务器ECS经济型e实例2核2G、3M固定带宽99元一年、轻量应用服务器2核2G3M带宽轻量服务器一年61元,…

使用Go语言编写高效的HTTP服务器

随着互联网的快速发展,HTTP服务器在Web开发中扮演着越来越重要的角色。而Go语言作为一种高效、并发性强的编程语言,为编写高性能的HTTP服务器提供了强大的支持。本文将探讨如何使用Go语言编写高效的HTTP服务器。 首先,我们需要了解Go语言的H…

基于FFmpeg的短视频编辑工具Cut

前言 最近在学习FFmpeg和音视频的相关知识,为了加强对FFmpeg的认识和了解,于是撸了一个短视频编辑软件Cut。 效果图先行: 技术点 启动页优化 但启动app的时候会有一个短暂的黑屏或者白屏。为什么呢? 是因为在App启动时&#x…

word2019保存后的图片变模糊了怎么办?Word 2019 默认保存后压缩变模糊的问题,解决方案

Word 2019 默认保存后压缩变模糊的问题,解决方案 1,新建word 文件,插入一张原始图片,1080*1920,如下图: 2,保存时,word 2019默认选项,导致word 保存后,图片…

Reids原理及简单命令

目录 1.关系数据库与非关系型数据库 关系型数据库 非关系型数据库 关系型数据库和非关系型数据库区别 数据存储方式不同 扩展方式不同 对事务性的支持不同 总结: 2. Redis简介 什么是redis reids优点 reids使用场景: reids快的原因 Redis数…

Linux/Unix/国产化操作系统常用命令(二)

目录 后CentOS时代国产化操作系统国产化操作系统有哪些常用Linux命令关于Linux的LOGO 后CentOS时代 在CentOS 8发布后,就有了一些变化和趋势,可以说是进入了"后CentOS时代"。这个时代主要表现在以下几个方面: CentOS Stream的引入…

阿里云迁移AWS视频点播技术攻坚

文章目录 🐷 背景🦥 简述🐥 Aws服务🦜 AWS CloudFormation🐞 问题🐉 落地方案🦉 Aws vs Aliyun🍄 避坑指南 🐷 背景 由于AWS整体成本略低于阿里云,公司决定将…

【软件测试】学习笔记-测试覆盖率

测试覆盖率通常被用来衡量测试的充分性和完整性,从广义的角度来讲,测试覆盖率主要分为两大类,一类是面向项目的需求覆盖率,另一类是更偏向技术的代码覆盖率。 需求覆盖率 需求覆盖率是指测试对需求的覆盖程度,通常的做…

YOLOv5训练损失、精度、mAP绘图功能 | 支持多结果对比,多结果绘在一个图片(消融实验、科研必备)

一、本文介绍 本文给大家带来的是YOLOv5系列的绘图功能,我将向大家介绍YOLO系列的绘图功能。我们在进行实验时,经常需要比较多个结果,针对这一问题,我写了点代码来解决这个问题,它可以根据训练结果绘制损失(loss)和mAP(平均精度均值)的对比图。这个工具不仅支持多个文件…

本地引入Element UI后导致图标显示异常

引入方式 npm 安装 推荐使用 npm 的方式安装&#xff0c;它能更好地和 webpack 打包工具配合使用。 npm i element-ui -SCDN 目前可以通过 unpkg.com/element-ui 获取到最新版本的资源&#xff0c;在页面上引入 js 和 css 文件即可开始使用。 <!-- 引入样式 --> <…

脆弱的SSL加密算法漏洞原理以及修复方法

漏洞名称&#xff1a;弱加密算法、脆弱的加密算法、脆弱的SSL加密算法、openssl的FREAK Attack漏洞 漏洞描述&#xff1a;脆弱的SSL加密算法&#xff0c;是一种常见的漏洞&#xff0c;且至今仍有大量软件支持低强度的加密协议&#xff0c;包括部分版本的openssl。其实&#xf…

数据库攻防学习之Redis

Redis 0x01 redis学习 在渗透测试面试或者网络安全面试中可能会常问redis未授权等一些知识&#xff0c;那么什么是redis&#xff1f;redis就是个数据库&#xff0c;常见端口为6379&#xff0c;常见漏洞为未授权访问。 0x02 环境搭建 这里可以自己搭建一个redis环境&#xf…

[Angular] 笔记 23:Renderer2 - ElementRef 的生产版本

chatgpt: Renderer2 简介 在 Angular 中&#xff0c;Renderer2 是一个服务&#xff0c;用于处理 DOM 操作的抽象层。它提供了一种安全的方式来操作 DOM&#xff0c;同时与平台无关&#xff0c;有助于维护应用程序的跨浏览器兼容性和安全性。 Renderer2 的作用是在 Angular 组…

【电商项目实战】商品详情显示与Redis存储购物车信息

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《电商项目实战》。&#x1f3af;&#x1f3af; &am…

OceanBase入选Gartner®云数据库管理系统魔力象限“荣誉提及”

近日&#xff0c;全球IT市场研究和咨询公司Gartner发布最新报告《Magic Quadrant™ for Cloud Database Management Systems》&#xff08;全球云数据库管理系统魔力象限&#xff09;。全自研分布式数据库 OceanBase 入选“荣誉提及”&#xff0c;2022 年推出的云数据库 OB Clo…

redis 面试问题 (更新中 ing)

目录 reids 是做什么的为什么那么快有哪些使用场景redis有哪些 数据结构redis 有哪些底层数据结构为什么设计 sds一个 字符串 存储多大容量 stream为什么设计 streamstream 消费者消息丢失stream 消息私信问题 持久化机制redis 持久化机制&#xff0c;优缺点&#xff0c;怎么用…

模型 安索夫矩阵

本系列文章 主要是 分享模型&#xff0c;涉及各个领域&#xff0c;重在提升认知。产品市场战略。 1 安索夫矩阵的应用 1.1 江小白的多样化经营策略 使用安索夫矩阵来分析江小白市场战略。具体如下&#xff1a; 根据安索夫矩阵&#xff0c;江小白的现有产品是其白酒产品&…

Mybatis之多表查询

目录 一、简介 1、使用嵌套查询: 2、使用多个 SQL 语句&#xff1a; 3、使用关联查询&#xff1a; 4、使用自定义映射查询&#xff1a; 二、业务场景 三、示例 1、一对一查询 2、一对多查询 一、简介 MyBatis 是一个优秀的持久层框架&#xff0c;它提供了强大的支持来执…