Pytest日志收集器配置

前言

pytest框架中,日志记录(logging)是一个强大的功能,它允许我们在测试期间记录信息、警告、错误等,从而帮助调试和监控测试进度。

pytestPython标准库中的logging模块完美集成,因此你可以很容易地在pytest测试中使用日志记录。

配置日志收集

通过修改pytest.ini配置文件来配置日志记录。

创建一个名为pytest.ini的文件在项目的根目录,并添加以下内

[pytest]
;打印详细日志,相当于命令行加 -vs
addopts = --capture=no --tb=long


;日志开关 true/false
log_cli = true


;输出到终端
;日志级别
log_cli_level = info
;日志格式
log_cli_format = %(asctime)s --> %(filename)-10s [line:%(lineno)-3d] --> %(levelname)-5s --> %(message)s
;日志时间格式
log_cli_date_format = %Y-%m-%d %H:%M:%S


; 输出到文件
;日志文件位置
log_file = logs/test-log.txt
;日志文件等级
log_file_level = info
;日志文件格式
log_file_format = %(asctime)s --> %(filename)-10s [line:%(lineno)-3d] --> %(levelname)-5s --> %(message)s
;日志文件日期格式
log_file_date_format = %Y-%m-%d %H:%M:%S

容来配置日志记录:

验证日志收集

代码实例

import logging
import pytest

logger = logging.getLogger(__name__)


@pytest.mark.parametrize(argnames=["v1", "v2"], argvalues=[[1, 2], [2, 3], [3, 4]])
def test_case_01(v1, v2):
    logger.info(f"断言:{v1} < {v2}")
    assert v1 < v2, "断言失败"

执行结果

测试用例添加日志

测试用例导入loggin模块,即可在想要的地方添加日志。

import logging

logging.info(f"请求方法:{method},请求路径:{url},请求参数:{data}")
logging.info(f"响应结果:{res}")
拓展-收集断言错误信息

利用钩子函数在测试用例执行结束阶段收集执行信息。

在目标目录创建conftest.py配置文件

import json
import logging


def pytest_runtest_makereport(item, call):
    if call.excinfo is not None:
        msg = {
            "module": item.location[0],
            "function": item.name,
            "line": item.location[1],
            "message": str(call.excinfo.value).replace("\n", ":")
        }
        logging.error(json.dumps(msg, indent=4, ensure_ascii=False))

结果查看:

拓展-动态生成日志文件

conftest.py文件添加如下代码

# 动态生成log文件的名称,哪怕配置文件中配置了log_file选项也不会生效
def pytest_configure(config):
    time_now = datetime.now().strftime('%Y_%m_%d_%H_%M_%S')
    config.option.log_file = os.path.join(config.rootdir, 'log', f'{time_now}.log')

结果查看:

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

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

相关文章

Spring源码解析(35)之Spring全体系源码流程图

一、前言 画了一个spring全体系的流程图&#xff0c;spring容器创建过程&#xff0c;spring生命周期过程&#xff0c;AOP过程&#xff0c;Spring事务执行过程。 二、Spring体系源码图

【1024程序员节】之C++系列完结篇:Web编程

文章目录 一、Web编程1. 使用C标准库和第三方库2. 使用CWeb框架3. 使用C与JavaScript的集成4. 数据库交互5. 部署和运维 二、CppCMS框架构建Web应用1. 安装 CppCMS&#xff1a;2. 创建项目目录和文件3. 编写源代码4. 编译和运行5. 访问 Web 应用 三、HTTP介绍1. 请求头部字段&a…

Vue项目的创建

安装Vue工具 Vue CLI Vue CLI Vue.js 开发的标准工具&#xff0c;Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统 npm install -g vue/cli安装之后&#xff0c;你就可以在命令行中访问 vue 命令。你可以通过简单运行 vue&#xff0c;看看是否展示出了一份所有可用命令的…

qt QApplication详解

一、概述 QApplication是Qt应用程序的基础类&#xff0c;负责设置和管理应用的环境。它的主要功能包括&#xff1a;初始化应用程序、管理事件循环、处理命令行参数、提供全局设置&#xff08;如样式和调色板&#xff09;以及创建和管理主窗口。通常在main函数中创建QApplicati…

Netty简单应用

1.服务端构建 接收客户端请求&#xff0c;打印请求消息&#xff1b;消息采用内置String作为编码与解码器&#xff1b;开启信息输入监听线程&#xff0c;发送消息至客户端&#xff1b; 1.1 服务端消息处理类 import io.netty.channel.Channel; import io.netty.channel.Chann…

React实现购物车功能

今日学习React的useReducer&#xff0c;实现了一个购物车功能 文章目录 目录 效果展示 逻辑代码 CSS代码 效果展示 逻辑代码 import {useReducer} from "react"; import ./index.css; import { message} from antd;export function ShoppingCount(){// 初始化购…

去哪儿旅行携手 HarmonyOS SDK | 告别繁琐,常用信息秒级填充

背景 去哪儿旅行作为行业内领先的一站式在线旅游平台&#xff0c;多年来在日益加剧的市场竞争中积极寻求创新&#xff0c;凭借其优质的服务深受消费者青睐。2024年&#xff0c;去哪儿旅行适配HarmonyOS NEXT版本&#xff0c; 升级用户服务体验。 当前&#xff0c;去哪儿旅行应…

HTML+JavaScript 贪吃蛇游戏实现与详解

在网页开发的领域中&#xff0c;利用 HTML 和 JavaScript 能够创造出各种引人入胜的互动游戏。其中&#xff0c;贪吃蛇作为一款经典之作&#xff0c;以其简单易玩的特性和紧张刺激的挑战&#xff0c;一直深受玩家的喜爱。本文将详细阐述如何运用 HTML 和 JavaScript 来打造一个…

OPPO携手比亚迪共同探索手机与汽车互融新时代

10月23日&#xff0c;OPPO与比亚迪宣布签订战略合作协议&#xff0c;双方将共同推进手机与汽车的互融合作&#xff0c;这一合作也标志着两大行业巨头在技术创新和产业融合上迈出了重要一步&#xff0c;为手机与汽车的深度融合探索新的可能。 OPPO创始人兼首席执行官陈明永、OP…

鸿蒙网络编程系列3-TCP客户端通讯示例

1. TCP简介 TCP协议是传输层最重要的协议&#xff0c;提供了可靠、有序的数据传输&#xff0c;是多个广泛使用的表示层协议的运行基础&#xff0c;相对于UDP来说&#xff0c;TCP需要经过三次握手后才能建立连接&#xff0c;建立连接后才能进行数据传输&#xff0c;所以效率差了…

【PDF文件】默认被某种软件打开,如何进行修改?

当有时下载某种软件后&#xff0c;电脑中的PDF文件就默认由该种软件打开&#xff0c;每次需要右键选择打开方式才能选择需要的其他软件打开。如下图所示。 修改方法&#xff1a; &#xff08;1&#xff09;点击电脑的“设置”&#xff0c;选择应用 &#xff08;2&#xff09;…

Java一站式校园社区外卖系统小程序源码

一站式校园社区外卖系统&#xff0c;让校园生活更便捷&#xff01; &#x1f3eb; 开篇&#xff1a;校园生活的“新宠儿” 嘿&#xff0c;小伙伴们&#xff01;今天要和大家分享一个超级实用的校园生活神器——“一站式校园社区外卖系统”&#xff01;在这个快节奏的时代&…

一个开源可私有化部署的没有任何广告的网易云

优点 ✅ 使用 Vue.js 全家桶开发&#x1f534; 网易云账号登录&#xff08;扫码/手机/邮箱登录&#xff09;&#x1f4fa; 支持 MV 播放&#x1f4c3; 支持歌词显示&#x1f4fb; 支持私人 FM / 每日推荐歌曲&#x1f6ab;&#x1f91d; 无任何社交功能&#x1f30e;️ 海外用…

歌手如何建立抖音百科?塑造个人形象!

在抖音这个充满无限可能的舞台上&#xff0c;明星们以独特的魅力吸引着亿万粉丝的目光。而抖音百科&#xff0c;作为明星们展示自我、塑造形象的又一重要窗口&#xff0c;正逐渐成为连接明星与粉丝的桥梁。 创建明星人物抖音百科&#xff0c;不仅是对明星过往成就的总结与回顾&…

WRB Hidden Gap,WRB隐藏缺口,MetaTrader 免费公式!(指标教程)

WRB Hidden Gap MetaTrader 指标用于检测和标记宽范围的柱体&#xff08;非常长的柱体&#xff09;或宽范围的烛身&#xff08;具有非常长实体的阴阳烛&#xff09;。此指标可以识别WRB中的隐藏跳空&#xff0c;并区分显示已填补和未填补的隐藏跳空&#xff0c;方便用户一眼识别…

uniapp移动端优惠券! 附源码!!!!

本文为常见的移动端uniapp优惠券&#xff0c;共有6种优惠券样式&#xff08;参考了常见的优惠券&#xff09;&#xff0c;文本内容仅为示例&#xff0c;您可在此基础上调整为你想要的文本 预览效果 通过模拟数据&#xff0c;实现点击使用优惠券让其变为灰色的效果&#xff08;模…

使用Dask在多块AMD GPU上加速XGBoost

Accelerating XGBoost with Dask using multiple AMD GPUs — ROCm Blogs 2024年1月26日 由Clint Greene撰写。 XGBoost 是一个用于分布式梯度提升的优化库。它已经成为解决回归和分类问题的领先机器学习库。如果您想深入了解梯度提升的工作原理&#xff0c;推荐阅读 Introduc…

Maven入门到实践:从安装到项目构建与IDEA集成

目录 1. Maven的概念 1.1 什么是Maven 1.2 什么是依赖管理 1.3 什么是项目构建 1.4 Maven的应用场景 1.5 为什么使用Maven 1.6 Maven模型 2.初识Maven 2.1 Maven安装 2.1.1 安装准备 2.1.2 Maven安装目录分析 2.1.3 Maven的环境变量 2.2 Maven的第一个项目 2.2.1…

深度学习Pytorch-Tensor函数

深度学习Pytorch-Tensor函数 Tensor的三角函数Tensor中其他的数学函数Tensor中统计学相关的函数&#xff08;维度&#xff0c;对于二维数据&#xff1a;dim0 按列&#xff0c;dim1 按行&#xff0c;默认 dim1&#xff09;Tensor的torch.distributions(分布函数)Tensor中的随机抽…

图论day62|拓扑排序理论基础、117.软件构建(卡码网)、最短路径之dijkstra理论基、47.参加科学大会(卡码网 第六期模拟笔试)

图论day62|拓扑排序理论基础、117.软件构建&#xff08;卡码网&#xff09;、最短路径之dijkstra理论基、47.参加科学大会&#xff08;卡码网 第六期模拟笔试&#xff09; 拓扑排序理论基础117.软件构建&#xff08;卡码网&#xff09;最短路径之dijkstra理论基础47.参加科学大…