pytest的常用插件和Allure测试报告

news2024/12/23 3:56:20

pytest常用插件

pytest-html插件

安装:

pip install pytest-html -U

用途:

生成html的测试报告

用法:

​在.ini配置文件里面添加

addopts = --html=report.html --self-contained-html

效果:

执行结果中存在html测试报告路径

pytest-xdist插件

安装:

pip install pytest-xdist -U

用途:

可以使用并发的方式执行用例

用法:

在.ini配置文件中添加

addopte -n 并发数(建议不要超过系统CPU的核心数)
如果并发数为0,相当于没有使用插件

效果:

会减少用例的执行时间,但是由于调用进程也需要消耗资源,所以填写的并发数太多时间并不会得到有效的提升

无并发执行情况:

并发数为2的执行情况:

可以看到效率有所提高

pytest-rerunfailures插件

安装:

pip install pytest-rerunfailures -U

用途:

在用例失败后进行重试,可以执行重试最大次数和每次重试之前的等待时间

用法:

在.ini配置文件中添加

addopts --reruns 重新执行的数量 --reruns-delay 每次重新执行的等待时间
如: --reruns 5 --reruns-delay 1   表示如果失败最多重新执行5次,并且每次重新执行之间间隔一秒

效果:

用例内容:

生成一个随机数范围是[1, 3)

断言这个随机数是否等于1,相当于是50%的概率

def test_1():
    a = random.randint(1, 3)
    assert a == 1

使用--reruns 5 --reruns-delay 1的配置执行后

pytest-order插件

安装:

pip install pytest-order -U

用途:

给用例排序,让用例可以按照执行的顺序执行

用法:

在用例上面加上如下标识

@pytest.mark.order(1)

执行时会按照数字从小到大的顺序执行,如果没有填数字或者没有添加标识的用例,会在排序的所有用例执行之后,按照原本的用例顺序执行。

效果:

用例内容:

test_1没有添加标识

test_2添加了标识但没有加入数字

test_3、test_4、test_5添加了标识并且加入了数字

def test_1():
    print('执行用例test_1')


@pytest.mark.order()
def test_2():
    print('执行用例test_2')


@pytest.mark.order(1)
def test_3():
    print('执行用例test_3')

@pytest.mark.order(3)
def test_4():
    print('执行用例test_4')

@pytest.mark.order(2)
def test_5():
    print('执行用例test_5')

预期执行顺序:

test_3、test_5、test_4、test_1、test_2

执行结果:

符合预期

pytest-base-url插件

安装:

pip install pytest-base-url -U

用途:

在用例中可以使用名为base-url的变量,可以在用例之间传递信息

用法:

在.ini配置文件中添加:

addopts  --base-url 内容
或者
base_url = 内容

效果:

用例内容:

打印base-url的内容

def test_abc(base_url):
    print('正在使用的环境是:', base_url)

base-url的内容为:

base_url = 测试环境

效果:

pytest-result-log插件

安装:

pip install pytest-result-log -U

用途:

打印的日志更详细,并且会对不同用例的日志进行区分

用法:

安装之后即可用

配置格式:

log_file = ./pytest.log
log_file_level = info
log_file_format = %(levelname)-8s %(asctime)s [%(name)s:%(lineno)s] : %(message)s
log_file_date_format = %Y-%m-%d %H:%M:%S

# 设置打印日志的级别
result_log_level_verbose = info

效果:

用例内容:

import logging

logger = logging.getLogger()

def test_log1():
    logger.info("哈哈哈,我是日志内容")

def test_log2():
    logger.info("哈哈哈,我也是日志内容")
    assert 1 == 2

执行结果:

会生成一个.log的文件,文件名为配置中设置的名称

log_file = ./pytest.log

Allure测试报告框架

环境需要

需要安装Allure和jdk11及以上版本(建议17)

并且需要将其加入到系统的环境变量

最终结果就是:在cmd窗口或者终端中输入java和allure都可以出现对应的内容

allure-pytest插件

安装:

pip install allure-pytest -U

用途:

将pytest生成的测试报告转化为Allure可以识别的数据

用法:

在.ini配置文件中添加:

addopts  --alluredir=./temps --clean-alluredir

Allure测试报告框架的用法

当生成了pytest的测试报告之后,在终端输入:

allure generate -c -o report temps

其中generate表示生成报告

-c表示清空之前的报告

-o表示报告存放的目录名字(后面的report是我设置的目录名字)

temps表示allure-pytest插件生成的测试结果存放的位置(名字可以自己更换)

可以通过在main.py文件中添加如下代码,用来在用例执行完之后,自动执行该命令

os.system('allure generate -c -o report temps')

效果:

点击你存放allure报告的目录(我的是report),找到index.html用浏览器打开

 

其中测试套会根据用来存在的目录进行区分

Allure测试报告定制

在Allure目录下找到config/allure.yml

修改成如下内容(就是把 - custom-logo-plugin 那一行加进去):

plugins:
  - junit-xml-plugin
  - xunit-xml-plugin
  - trx-plugin
  - behaviors-plugin
  - packages-plugin
  - screen-diff-plugin
  - xctest-plugin
  - jira-plugin
  - xray-plugin
  - custom-logo-plugin

然后在来到Allure的plugins\custom-logo-plugin\static路径下

找到图片文件和css文件

设计好对应的logo图片和css样式,加进去Allure报告的logo就会修改了

Allure报告中对用例分类

我们可以在用例加上allure标记

同类型的标记中内容相同的标记会被归为一类

# 对测试用例进行划分,级别从大到小
@allure.epic()
@allure.feature()
@allure.story()
@allure.title()

举例:

@allure.epic('项目标记1')
@allure.feature('模块标记1')
class Test1:
    @allure.story('场景1')
    @allure.title('功能1')
    def test_1(self):
        print('执行了test_1')

    @allure.story('场景1')
    @allure.title('功能2')
    def test_2(self):
        print('执行了test_2')

    @allure.title('功能2')
    def test_3(self):
        print('执行了test_3')

@allure.epic('项目标记1')
@allure.feature('模块标记2')
class Test2:
    @allure.title('功能1')
    def test_1(self):
        print('执行了test_1')

    @allure.title('功能1')
    def test_2(self):
        print('执行了test_2')

    @allure.story('场景1')
    @allure.title('功能2')
    def test_3(self):
        print('执行了test_3')

Test1类和Test2类都加上了epic('项目标记1')此时他们会在报告会打包到一个名为"项目标记1"的目录下

又因为他们各自有带有不同的feature()标记,所以在"项目标记1"目录下Test1类和Test2类中的用例会再被分为两个目录:"模块标记1"和"模块标记2"

Test1类中用例又被分为"场景1"目录和直接展示的用例,以此类推

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

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

相关文章

前端工程化之:webpack1-8(loader)

一、loader webpack 做的事情,仅仅是分析出各种模块的依赖关系,然后形成资源列表,最终打包生成到指定的文件中。 更多的功能需要借助 webpack loaders (加载器)和 webpack plugins (插件)完成。 webpack loader : loader 本质上是…

【Java开发岗面试】八股文—微服务、消息中间件

声明: 背景:本人为24届双非硕校招生,已经完整经历了一次秋招,拿到了三个offer。本专题旨在分享自己的一些Java开发岗面试经验(主要是校招),包括我自己总结的八股文、算法、项目介绍、HR面和面试…

python 基础知识点(蓝桥杯python科目个人复习计划32)

今日复习内容:基础算法中的位运算 1.简介 位运算就是对二进制进行操作的运算方式,分为与运算,或运算,异或运算,取反,左移和右移。 (1)与运算 xyx&y000010100111 (2)或运算 …

OpenHarmony—Hap包签名工具

概述 为了保证OpenHarmony应用的完整性和来源可靠,在应用构建时需要对应用进行签名。经过签名的应用才能在真机设备上安装、运行、和调试。developtools_hapsigner仓 提供了签名工具的源码,包含密钥对生成、CSR文件生成、证书生成、Profile文件签名、Ha…

【安装指南】maven下载、安装与配置详细教程

🌼一、概述 maven功能与python的pip类似。 Apache Maven是一个用于软件项目管理和构建的强大工具。它是基于项目对象模型的,用于描述项目的构建配置和依赖关系。以下是一些关键的 Maven 特性和概念: POM(Project Object Model&…

MATLAB知识点:矩阵的拼接和重复

​讲解视频:可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili 节选自第3章 3.3.4 矩阵的拼接和重复 有时候我们需要对多个矩…

云原生Kubernetes: Ubuntu 安装 K8S 1.23版本(单Master架构) 及故障恢复

目录 一、实验 1.环境 2.安装 Ubuntu 3.连接Ubuntu 4.master节点安装docker 5.node节点安装docker 6.master节点安装K8S 7.添加K8S工作节点 8.安装网络插件calico 9.故障 10.故障恢复 11.测试k8s网络和coredns 二、问题 1.Ubuntu如何修改镜像源 2.Ubuntu和Windo…

KAFKA节点故障的容错方案

KAFKA节点故障的容错方案 1. broker启动加载逻辑1.1 日志组成和分析1.2 snapshot文件1.3 broker启动流程1.4 LogManager的初始化和启动过程 2. controller高可用1.1 选主逻辑1.2 HA切换1.3 controller的职责 3. partition高可用3.1 ISR列表3.1 选举Leader 4. 疑问和思考4.1 如果…

11:按键

按键 1、按键的相关知识2、独立按键3、CPU如何处理按健4、编程测试(用LED1作为指示)5 、编程测试(用8个LED作为指示) 1、按键的相关知识 分为独立按键和矩阵按键 2、独立按键 由图得独立按键右边接地,左边独立连接到…

正则表达式可视化工具regex-vis

什么是正则表达式 ? 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。【百度百科】 正则表达式用简短…

题目: 有1234个数字, 组成多个互不相同且无重复数字的三位数? 都是多少?

lua脚本如下 最原始的解题方法 local str{} local i, j, k0, 0, 0 for i1, 4 do for j1, 4 do for k1, 4 do if i~j and i~k and j~k then str[#str1]i..j..k end end end end print("组成的数有"..#str) print(table.unpack(str)) 运行的结果如下 组成的数有24 1…

【课程作业_01】国科大2023模式识别与机器学习实践作业

国科大2023模式识别与机器学习实践作业 作业内容 从四类方法中选三类方法,从选定的每类方法中 ,各选一种具体的方法,从给定的数据集中选一 个数据集(MNIST,CIFAR-10,电信用户流失数据集 )对这…

微信小程序新手入门教程三:基础语法介绍

WXML(WeiXin Markup Language)是框架设计的一套标签语言,可以与各种组件相结合,进行页面构建。 一 常用标签 wxml的语法结构与我们熟悉的html很像,但在细节处略有不同,我们可以参考html标签对比记忆。wxm…

基于协同过滤的个性化电影推荐系统分析设计python+flask

本系统为用户而设计制作个性化电影推荐管理,旨在实现个性化电影推荐智能化、现代化管理。本个性化电影推荐自动化系统的开发和研制的最终目的是将个性化电影推荐的运作模式从手工记录数据转变为网络信息查询管理,从而为现代管理人员的使用提供更多的便利…

华为OD机试真题【日志首次上报最多积分】

1、题目描述 【日志首次上报最多积分】 日志采集是运维系统的的核心组件。日志是按行生成,每行记做一条,由采集系统分批上报。 如果上报太频繁,会对服务端造成压力;如果上报太晚,会降低用户的体验; 如果一次上报的…

京东物流基于 StarRocks 的数据分析平台建设

作者:京东物流 数据专家 刘敬斌 小编导读: 京东集团 2007 年开始自建物流,2017 年 4 月正式成立京东物流集团,截至目前,京东物流已经构建了一套全面的智能物流系统,实现服务自动化、运营数字化及决策智能化…

whale-quant 学习 part7:量化回测

量化回测 计算策略评估指标聚宽平台量化回测实践策略实现 参考 计算策略评估指标 使用数据为:贵州茅台(600519.SH)、工商银行(601398.SH)、中国平安(601318.SH),策略基准是沪深300指…

使用输出事件激活Simulink块

什么是输出事件? 输出事件是发生在Stateflow图表中,但在图表外的Simulink块中可见的事件。这种类型的事件允许图表将图表中发生的事件通知模型中的其他块。 您可以使用输出事件来激活同一模型中的其他块。您可以在图表中定义多个输出事件,其中每个输出事件映射到一个输出端…

Flutter组件 StatefulWidget、StatelessWidget 可继承写法

前言 学过Java的同学,应该都知道面向对象语言的三大特征,封装、继承、多态; Dart也是面向对象的语言,但是在Flutter中的很多组件都被下划线 _ 标记为私有,导致无法继承,本文将介绍一种非私有的创建组件写…

大数据-Spark-关于Json数据格式的数据的处理与练习

上一篇: 大数据-MapReduce-关于Json数据格式的数据的处理与练习-CSDN博客 16.7 Json在Spark中的引用 依旧利用上篇的数据去获取每部电影的平均分 {"mid":1,"rate":6,"uid":"u001","ts":15632433243} {"m…