Pytest自动化测试框架之Allure报告

简介

Allure Framework是一种灵活的、轻量级、多语言测试报告工具。

不仅可以以简洁的网络报告形式非常简洁地显示已测试的内容,

而且还允许参与开发过程的每个人从日常执行中提取最大程度的有用信息和测试。

从开发/测试的角度来看:

Allure报告可以快速查看到缺陷点,可以将测试未通过划分为Bug和中断的测试。

还可以配置日志,步骤,固件,附件,时间,历史记录,以及与TMS的集成和Bug跟踪系统,以便掌握所有信息。

从管理者的角度来看:

Allure提供了一个清晰的全局,涵盖了所涵盖的功能,缺陷聚集的位置,执行时间表,以及许多其他方便的事情。

独特的模块化和可扩展性,确保你能够进行适当的微调,以使更适合你自己。

官方文档:Allure Framework

部署使用
Pytest作为一个高扩展性、功能强大的自动化测试框架,自身的测试结果是较为简单的,如果想要一份完整测试报告需要其他插件的支持。

如果你对测试报告要求没那么高,你可以使用 pytest-html 插件,基本覆盖了测试报告的常规内容。

但是如果你想查看清晰的测试过程、多维度的测试报告、自定义一些输出,以及与用例和缺陷系统集成等,那 allure-python 将是你的"不二人选"。

注意:allure-pytest 从1.7之后已弃用,从2.0版本开始迁移至 allure-python 项目(即使用allure2),另外要运行allure命令行也需要Java的支持。

1、安装:
(1)allure-pytest插件:

pip install -U allure-pytest

这将安装allure-pytest和allure-python-commons程序包,以生成与allure2兼容的报告数据。

(2)allure工具:

官方下载地址:https://github.com/allure-framework/allure2/releases

解压软件包(建议直接放到Python文件夹下),然后添加bin目录到环境变量中,最后使用 allure --version 验证是否安装成功。

2、基本使用

>>> 要使allure侦听器能够在测试执行过程中收集结果,只需添加 --alluredir  选项并提供路径即可存储结果。

pytest --alluredir=<directory-with-results>

如果你运行后进行了用例更改,那么下次运行可能还是会查看到之前记录,可添加 --clean-alluredir 选项清除之前记录。

pytest --alluredir=<directory-with-results> --clean-alluredir

>>> 要在测试完成后查看实际报告,你需要使用allure命令行应用程序从结果生成报告。

(1)在默认浏览器中显示生成的报告

allure serve <my-allure-results>

(2)要从现有的Allure结果生成报告,可以使用以下命令:

allure generate <directory-with-results>

默认报告将生成到allure-report文件夹,你可以使用 -o 标志更改目标文件夹:

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

 (3)生成报告后,可以在默认系统浏览器中将其打开,只需运行:

allure open <directory-with-report>

你也可以找到该目录,使用浏览器打开该目录下index.html。注意:有时打开会找不到数据或者乱码,如果你使用的是pycharm,请在pycharm中右击打开。

 (4)如果要删除生成的报告数据,只需运行:

allure report clean

 默认情况下,报告命令将在 allure-results 文件夹中查找报告,如果要从其他位置使用报告,则可以使用 -o 选项。

(5)你也可以使用 allure help 命令查看更多帮助。

测试报告

你可以在allure报告中看到所有默认的pytest状态:只有由于一个断言错误而未成功进行的测试将被标记为失败,其他任何异常都将导致测试的状态为坏。

示例:

# test_sample.py
import pytest
 
# 被测功能
def add(x, y):
    return x + y
 
# 测试类
class TestAdd:
 
    # 跳过用例
    def test_first(self):
        pytest.skip('跳过')
        assert add(3, 4) == 7
 
    # 异常用例
    def test_second(self):
        assert add(-3, 4) == 1
        raise Exception('异常')
 
    # 成功用例
    def test_three(self):
        assert add(3, -4) == -1
 
    # 失败用例
    def test_four(self):
        assert add(-3, -4) == 7
# conftest.py
import pytest
 
@pytest.fixture(scope='session', autouse=True)
def db():
    print('start')
    yield
    print('closed')

 运行:

E:\workspace-py\Pytest>pytest test_sample.py --alluredir=report --clean-alluredir
========================================================================== test session starts ==========================================================================
platform win32 -- Python 3.7.3, pytest-6.0.2, py-1.9.0, pluggy-0.13.0
rootdir: E:\workspace-py\Pytest
plugins: allure-pytest-2.8.18, assume-2.3.3, cov-2.10.1, html-3.0.0, rerunfailures-9.1.1, xdist-2.1.0
collected 4 items                                                                                                                                                        
 
test_sample.py sF.F                                                                                                                                                [100%]
 
=============================================================================== FAILURES ================================================================================
__________________________________________________________________________ TestAdd.test_second __________________________________________________________________________
 
self = <test_sample.TestAdd object at 0x000000000464F278>
 
    def test_second(self):
        assert add(-3, 4) == 1
>       raise Exception('异常')
E       Exception: 异常
 
test_sample.py:21: Exception
___________________________________________________________________________ TestAdd.test_four ___________________________________________________________________________
 
self = <test_sample.TestAdd object at 0x000000000464FD30>
 
    def test_four(self):
>       assert add(-3, -4) == 7
E       assert -7 == 7
E        +  where -7 = add(-3, -4)
 
test_sample.py:29: AssertionError
======================================================================== short test summary info ========================================================================
FAILED test_sample.py::TestAdd::test_second - Exception: 异常
FAILED test_sample.py::TestAdd::test_four - assert -7 == 7
================================================================ 2 failed, 1 passed, 1 skipped in 0.14s =================================================================

 生成报告:

E:\workspace-py\Pytest>allure generate --clean report
Report successfully generated to allure-report

查看目录:

E:\workspace-py\Pytest>tree
文件夹 PATH 列表
卷序列号为 B2C1-63D6
E:.
├─.idea
├─.pytest_cache
│  └─v
│      └─cache
├─allure-report
│  ├─data
│  │  ├─attachments
│  │  └─test-cases
│  ├─export
│  ├─history
│  ├─plugins
│  │  ├─behaviors
│  │  ├─jira
│  │  ├─junit
│  │  ├─packages
│  │  ├─screen-diff
│  │  ├─trx
│  │  ├─xctest
│  │  ├─xray
│  │  └─xunit-xml
│  └─widgets
├─report
└─__pycache__

 查看报告:

 Overview:总览,显示用例执行情况、严重程度分布、环境信息等。
Categories:分类,按用例执行结果分类,异常错误和失败错误。
Suites:套件,按测试用例套件分类,目录 ->测试文件 -> 测试类 ->测试方法。
Graphs:图表,显示用例执行分布情况,状态、严重程度、持续时间、持续时间趋势、重试趋势、类别趋势、整体趋势。
Timeline:时间线,显示用例耗时情况,具体到各个时间点用例执行情况
Behaviors:行为,按用例行为举止分类(以标记文字形式显示,需要用例添加allure相关装饰器)
Package:配套,按目录形式分类,显示不同的目录用例执行情况。
 

 用例详情:

Allure报告不仅能显示pytest不同执行结果状态,错误情况,固件等,还能捕获参数化测试所有参数名称和值。

用例:

# test_sample.py
import pytest
import allure
 
# 被测功能
def add(x, y):
    return x + y
 
# 测试类
@allure.feature("测试练习")
class TestLearning:
    data = [
        [3, 4, 7],
        [-3, 4, 1],
        [3, -4, -1],
        [-3, -4, 7],
    ]
    @allure.story("测试用例")
    @allure.severity(allure.severity_level.NORMAL)
    @pytest.mark.parametrize("data", data)
    def test_add(self, data):
        assert add(data[0], data[1]) == data[2]

 报告:

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

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

相关文章

弘基笔记本电脑怎么使用U盘重装系统?

弘基笔记本电脑怎么使用U盘重装系统&#xff1f;有的用户的弘基笔记本电脑使用过程中出现了蓝屏的情况&#xff0c;系统频繁的出现蓝屏问题导致自己的使用受到了影响&#xff0c;那么这个情况怎么去进行问题的解决呢&#xff1f;一起来看看以下的解决方法吧。 准备工作&#xf…

直接缓存访问DCA

直接缓存访问DCA&#xff1a;网卡原本DMA写是将接收到的数据帧写入系统内存&#xff0c;DCA机制是网卡DMA写输入的数据能直接发送到属于CPU内部的L2高速缓存中&#xff0c;从而提高网络IO的性能。 设备驱动程序要初始化网卡的DCA功能&#xff0c;将CPU ID号&#xff08;通过获取…

Unity-vr用眼睛注视选择物体

Unity-vr用眼睛注视选择物体 文章目录 Unity-vr用眼睛注视选择物体工程版本用法说明脚本说明WatchController - 注视主控制器WatchEvent - 注视事件WatchGameobject - 被注视物体TimerTool - 计时器工具 总结 工程版本 unity2019.4.9f1 vs2019 项目工程源代码下载 用法说明 …

技术大佬们都是怎么学习的?

目录 问题 熟悉更多业务 熟悉端到端 自学 Do exercise Learning trying Teaching 问题 今天逛帖子的时候&#xff0c;看到这么个问题&#xff1a; 这个问题我曾经也很好奇过&#xff0c;那些成为技术大佬的人当初是怎么学习&#xff0c;以及怎么成长过来的&#xff0…

私有GitLab仓库 - 本地搭建GitLab私有代码仓库并随时远程访问「内网穿透」

文章目录 前言1. 下载Gitlab2. 安装Gitlab3. 启动Gitlab4. 安装cpolar内网穿透5. 创建隧道配置访问地址6. 固定GitLab访问地址6.1 保留二级子域名6.2 配置二级子域名 7. 测试访问二级子域名 转载自远控源码文章&#xff1a;Linux搭建GitLab私有仓库&#xff0c;并内网穿透实现公…

Makefile

Makefile 1.举一个Makefile的例子2.使用变量3.更省事的方式,让Make 自动推导.PHONY:clean是什么意思&#xff1f;&#xff01; 4.cmake与Makefile的联系在 linux 平台下使用 CMake 生成 Makefile 并编译的流程如下&#xff1a; 1.举一个Makefile的例子 hello_demo : hellospea…

回收站中怎么找回误删除的文件?这几种方法很实用

当我们在电脑上操作文件的时候&#xff0c;难免会有不小心删除文件的情况发生。这个时候&#xff0c;我们可以打开回收站来找回误删除的文件。但是&#xff0c;有时候我们也会误将回收站清空。那么&#xff0c;该怎样才能找回已经误删除的文件呢&#xff1f;在这里提供了回收站…

chatgpt赋能python:用Python下载MP3的方法

用Python下载MP3的方法 如果你想从互联网上下载MP3&#xff0c;那么你可以使用Python来实现这个任务。在本文中&#xff0c;我们将介绍如何用Python编写程序来下载MP3&#xff0c;同时还将分享一些有用的工具和资源。 Python中使用的库 要下载MP3&#xff0c;你需要使用Pyth…

一篇文章搞定《Android事件分发》

一篇文章搞定《Android事件分发》 什么是事件分发MotionEvent事件事件如何从屏幕到APPInputManagerServiceWindowManagerServiceWindow小结 事件如何从APP到达对应页面第一步&#xff1a;分类第二步&#xff1a;送去Activity后续的传递小结&#xff1a; 页面的事件分发整个流程…

移动云COCA架构,重新定义下一代云

当前&#xff0c;算力已经成为 全球科技竞争的焦点 为此&#xff0c;移动云重磅发布 「移动云COCA&#xff08;Compute on chip Architecture&#xff09;软硬一体片上计算架构」 以下简称移动云COCA架构 以此打造国家级自主可控的 高性能算力底座 带动国产化智算产业成熟…

【ISO14229_UDS刷写】-5-$38诊断服务RequestFileTransfer理论部分

总目录&#xff1a;&#xff08;单击下方链接皆可跳转至专栏总目录&#xff09; 《UDS/OBD诊断需求编辑工具》总目录https://blog.csdn.net/qfmzhu/article/details/123697014 目录 1 $0x38 RequestFileTransfer诊断服务描述 2 0x38服务请求消息 2.1 0x38服务请求消息定义…

写给初学者的YOLO目标检测 概述

文章目录 什么是目标检测What is YOLO?为什么YOLO在目标检测领域如此流行&#xff1f;1. 速度快2. 高检测精度3. 更好的泛化性4. 开源 YOLO架构YOLO目标检测是如何工作的&#xff1f;残差块(Residual blocks)边界框回归&#xff08;Bounding box regression&#xff09;交并比…

基于ESP32-CAM 和 OpenCV 设计的手势控制虚拟鼠标

概述 在本文中,我们将使用ESP32-CAM和OpenCV开发手势控制虚拟鼠标。ESP32 Camera Module和Python程序可用于无线控制鼠标跟踪和点击操作。 入门者必须具备 Python、图像处理、嵌入式系统以及物联网的丰富知识。首先,我们将了解如何控制鼠标跟踪和单击,以及运行 python 程序…

20年前,微软给金山那刀,现今一举将WPS推上领奖台,WPS,赢了

WPS&#xff0c;赢了 正如姚冬&#xff08;金山办公副总裁&#xff09;所说&#xff1a; 文本的命令行到图形界面的那次&#xff0c;改变整个人机交互的方式&#xff0c;我们公司历史上最大的一次危机也是那一次&#xff0c; 但我们依然挺过来了&#xff0c;我们相信这次技术浪…

一个神奇的工具,让URL地址都变成了“ooooooooo“

一个神奇的工具&#xff0c;让URL地址都变成了"ooooooooo" 一、核心代码二、URL编码/解码 最近发现一个有意思工具&#xff0c;就是将一个URL地址转换为都是 ooooooooo 的样子&#xff0c;通过转换后的地址访问可以转换回到原始地址&#xff0c;转换的逻辑有点像短链…

linuxOPS基础_linux安装配置

Linux系统下载 Linux系统版本选择&#xff1a;CentOS7.6 x64&#xff0c;【镜像一般都是CentOS*.iso文件】 问题&#xff1a;为什么不选择最新版的8 版本&#xff1f; 7.x 目前依然是主流 7.x 的各种系统操作模式是基础 官网&#xff1a;https://www.centos.org/ &#xff0c;…

springboot+vue4S店车辆管理系统(java项目源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的4S店车辆管理系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1a;风…

linux小技巧-如何修改IP(四种方法)

目录 项目场景&#xff1a; 方法分析及步骤介绍 原因分析&#xff1a; 解决方案&#xff1a; 项目场景&#xff1a; 项目上经常遇到修改IP的情况&#xff0c;这里总结一些各个情况下修改IP的方法&#xff0c;尤其时有时候没有主机屏幕显示&#xff0c;借助于命令行的方式修…

行业领先生物制药企业在冷链物流运输中采用虹科LIBERO温度记录解决方案

中国首个获得世界卫生组织国际通用名的生物Ⅰ类新药是用于抗血管内皮生长因子的融合蛋白&#xff0c;该药物通过结合血管内皮生长因子VEGF&#xff0c;竞争性抑制VEGF与受体结合并阻止VEGF家族受体的激活&#xff0c;从而抑制内皮细胞增殖和血管新生&#xff0c;达到治疗湿性年…

即时通讯软件(企业IM)对企业的作用

随着网络时代的来临&#xff0c;即时通讯软件也开始逐渐在企业中流行起来&#xff0c;甚至很多公司都已经将即时通讯软件作为内部沟通的主要工具&#xff0c;那么这种情况下&#xff0c;即时通讯软件对企业究竟有什么作用呢&#xff1f; 首先&#xff0c;即时通讯软件对于企业内…