pytest日志显示

pytest 中,可以通过 钩子函数配置文件 pytest.ini 配置日志的显示方式,实现对日志的灵活控制。以下是常用实现方式及配置说明。


方式一:使用 conftest.py 钩子函数自定义日志显示

通过 conftest.py 文件中的钩子函数,实现日志记录并自定义显示。

实现步骤
import pytest
import logging# 配置日志格式和输出
def pytest_configure(config):log_format = "%(asctime)s - %(levelname)s - %(message)s"logging.basicConfig(level=logging.INFO,  # 设置日志级别format=log_format,filename="test.log",  # 日志文件保存路径filemode="w"  # 每次运行时重写日志文件)console = logging.StreamHandler()  # 控制台输出console.setLevel(logging.INFO)  # 控制台日志级别console.setFormatter(logging.Formatter(log_format))logging.getLogger("").addHandler(console)logging.info("Logging setup complete.")# 钩子函数:记录每个测试的开始和结束
@pytest.hookimpl(tryfirst=True, hookwrapper=True)
def pytest_runtest_protocol(item, nextitem):logging.info(f"Test started: {item.name}")outcome = yieldresult = "PASSED" if outcome.get_result().passed else "FAILED"logging.info(f"Test finished: {item.name} - {result}")
运行效果

运行测试时,日志会记录在 test.log 文件中,同时在控制台实时输出。


方式二:通过 pytest.ini 配置文件管理日志显示

使用 pytest.ini 文件设置全局日志配置,省去手动编写 logging 的代码。

配置示例

创建或编辑项目中的 pytest.ini 文件:

[pytest]
log_cli = true  # 启用控制台日志输出
log_cli_level = INFO  # 设置日志级别
log_cli_format = %(asctime)s - %(levelname)s - %(message)s  # 日志格式
log_cli_date_format = %Y-%m-%d %H:%M:%S  # 日期格式log_file = test.log  # 日志文件保存路径
log_file_level = INFO  # 文件日志级别
log_file_format = %(asctime)s - %(levelname)s - %(message)s  # 文件日志格式
log_file_date_format = %Y-%m-%d %H:%M:%S  # 文件日期格式
运行效果
  • 控制台输出的日志格式与级别按照配置显示。
  • 所有日志信息保存到 test.log 文件。

方式三:在测试代码中使用 caplog 捕获日志

使用 pytest 提供的内置 caplog 功能捕获日志,适用于验证日志输出的测试场景。

测试用例示例
import loggingdef test_logging_example(caplog):logging.info("This is an info log.")logging.error("This is an error log.")assert "info log" in caplog.text  # 验证日志内容assert "error log" in caplog.text
运行效果
  • caplog 捕获到的日志信息可以用于断言和分析。

常见日志配置说明

配置项描述示例值
log_cli启用控制台日志输出。true
log_cli_level设置控制台日志输出的级别。INFO, DEBUG, ERROR
log_cli_format控制台日志的格式。%(asctime)s - %(message)s
log_cli_date_format控制台日志的日期格式。%Y-%m-%d %H:%M:%S
log_file指定日志文件的路径。test.log
log_file_level设置日志文件的输出级别。INFO, WARNING
log_file_format文件日志的格式。%(levelname)s - %(message)s
log_file_date_format文件日志的日期格式。%Y-%m-%d %H:%M:%S

推荐组合方式

  1. 全局日志管理:

    • 使用 pytest.ini 配置,统一管理日志级别、格式和输出路径。
    • 适用于简单、稳定的项目日志需求。
  2. 细粒度控制:

    • conftest.py 中结合钩子函数,针对用例或阶段添加特定的日志逻辑。
    • 适用于复杂场景的动态日志需求。
  3. 日志验证:

    • 使用 caplog 在特定测试用例中捕获日志内容,便于断言和调试。

通过以上方式,可以灵活、高效地在 pytest 项目中实现日志管理与显示。

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

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

相关文章

支持向量机算法(一):像讲故事一样讲明白它的原理及实现奥秘

1、支持向量机算法介绍 支持向量机(Support Vector Machine,SVM)是一种基于统计学习理论的模式识别方法, 属于有监督学习模型,主要用于解决数据分类问题。SVM将每个样本数据表示为空间中的点,使不同类别的…

数据结构与算法之二叉树: LeetCode 108. 将有序数组转换为二叉搜索树 (Ts版)

将有序数组转换为二叉搜索树 https://leetcode.cn/problems/convert-sorted-array-to-binary-search-tree/description/ 描述 给你一个整数数组 nums ,其中元素已经按 升序 排列请你将其转换为一棵 平衡 二叉搜索树 示例 1 输入:nums [-10,-3,0,5,9…

【博主推荐】 Microi吾码开源低代码平台,快速建站,提高开发效率

🍬引言 🍬什么是低代码平台? 低代码平台(Low-Code Platform)是一种使开发人员和业务用户可以通过图形化界面和少量的编程来创建应用程序的开发工具。与传统的编程方式相比,低代码平台大大简化了开发过程&a…

理解 Tomcat 架构与自定义实现

前言 Tomcat 是一个轻量级的 Web 容器,被广泛应用于 Java Web 开发中。通过它,我们可以轻松地部署和运行 Web 应用。在本文中,我们将深入分析 Tomcat 的核心架构,同时结合一段代码,手动实现一个简化的 Tomcat 服务&am…

用户界面软件02

基于表单的用户界面 在“基于表单的用户界面”里面,用户开始时选中某个业务处理(模块),然后应用程序就使用一系列的表单来引导用户完成整个处理过程。大型机系统上的大部分用户界面都是这样子的。[Cok97]中有更为详细的讨论。 面…

go如何从入门进阶到高级

针对Go语言的学习,不同阶段应采取不同的学习方式,以达到最佳效果.本文将Go的学习分为入门、实战、进阶三个阶段,下面分别详细介绍 一、社区 Go语言中文网 作为专注于Go语言学习与推广的平台,Go语言中文网为开发者提供了丰富的中…

采用标准化的方式开展设计-研发中运用设计模式

概述 实现规范化、标准化的引导式设计,以业务需求为输入,识别业务特点,并通过引导式设计,找到最适合的设计模式、具体方案,汇总成为应用的设计,拉齐各应用的设计一的致性。 采用标准化的方式开展设计…

Qt之屏幕录制设计(十六)

Qt开发 系列文章 - screencap(十六) 目录 前言 一、实现原理 二、实现方式 1.创建录屏窗口 2.录屏窗口类定义 3.自建容器对象定义 4.用户使用 5.效果演示 总结 前言 利用Qt实现屏幕录制设计,可以通过使用Qt自带的类QScreen、QPixma…

【C语言程序设计——选择结构程序设计】求阶跃函数的值(头歌实践教学平台习题)【合集】

目录😋 任务描述 相关知识 1. 选择结构基本概念 2. 主要语句类型​(if、if-else、switch) 3. 跃迁函数中变量的取值范围 4. 计算阶跃函数的值 编程要求 测试说明 通关代码 测试结果 任务描述 本关任务:输入x的值&#x…

自定义字典转换器用于easyExcel 导入导出

文章目录 引言I 字典转换器、注解、序列化器注解定义自定义字典转换器用于easyExcel 导入导出自定义字典序列化器II 字典存储设计数据库表结构redis缓存引言 需求导入Excel时,根据字典内容或者字段编码转换 导出Excel时,根据字典内容或者字段编码转换 接口响应数据序列化时,…

Mac软件介绍之录屏软件Filmage Screen

软件介绍 Filmage Screen 是一款专业的视频录制和编辑软件,适用于 Mac 系统 可以选择4k 60fps,可以选择录制电脑屏幕,摄像头录制,可以选择区域录制。同时也支持,简单的视频剪辑。 可以同时录制电脑麦克风声音 标准…

RK3588平台开发系列讲解(系统篇)Linux Kconfig的语法

文章目录 一、什么是Kconfig二、config模块三、menuconfig四、menu 和 endmenu五、choice 和 endchoice六、source七、depends on八、default九、help十、逻辑表达式沉淀、分享、成长,让自己和他人都能有所收获!😄 一、什么是Kconfig Kconfig的语法及代码结构非常简单。本博…

.NET 9.0 WebApi 发布到 IIS 详细步骤

微软表示,.NET 9 是迄今为止性能最高的 .NET 版本,对运行时、工作负载和语言方面进行了 1,000 多项与性能相关的改进,并采用了更高效的算法来生成更好的代码。 .NET 9 是 .NET 8 的继任者,特别侧重于云原生应用和性能。 作为标准期…

感知器的那些事

感知器的那些事 历史背景Rosenblatt和Minsky关于感知机的争论弗兰克罗森布拉特简介提出感知器算法Mark I感知机争议与分歧马文明斯基简介单层感知器工作原理训练过程多层感知器工作原理单层感知机 vs 多层感知机感知器模型(Perceptron),是由心理学家Frank Rosenblatt在1957年…

Flutter中的网络请求图片存储为缓存,与定制删除本地缓存

Flutter中的网络请求图片存储为缓存,与定制删除本地缓存 1:封装请求图片函数 2:访问的图片都会转为本地缓存,当相同的请求url,会在本地调用图片 3:本地缓存管理【windows与andriod已经测试】【有页面】【有…

复杂园区网基本分支的构建

目录 1、各主机进行网络配置。2、交换机配置。3、配置路由交换,进行测试。4、配置路由器接口和静态路由,进行测试。5、最后测试任意两台主机通信情况 模拟环境链接 拓扑结构 说明: VLAN标签在上面的一定是GigabitEthernet接口的&#xff0c…

快速入门Spring Cloud Alibaba,轻松玩转微服务

​ 1 快速入门Spring Cloud Alibaba,轻松玩转微服务 1.1 架构 架构图: 1.2 项目结构 1.2.1 系统框架版本 版本适配查看:https://sca.aliyun.com/docs/2023/overview/version-explain/ Spring Boot Version :3.2.4 Spring Clo…

数据结构大作业——家谱管理系统(超详细!完整代码!)

目录 设计思路: 一、项目背景 二、功能分析 查询功能流程图: 管理功能流程图: 三、设计 四、实现 代码实现: 头文件 结构体 函数声明及定义 创建家谱树头结点 绘制家谱树(打印) 建立右兄弟…

OpenHarmony通过挂载镜像来修改镜像内容,RK3566鸿蒙开发板演示

在测试XTS时会遇到修改产品属性、SElinux权限、等一些内容,修改源码再编译很费时。今天为大家介绍一个便捷的方法,让OpenHarmony通过挂载镜像来修改镜像内容!触觉智能Purple Pi OH鸿蒙开发板演示。搭载了瑞芯微RK3566四核处理器,树…

Gitee上传项目代码教程(详细)

工具必备:Git Bash 上传步骤 1.在Gitee创建项目仓库 2.进入本地项目目录 右键打开Git Bash here 3.配置用户名和邮箱 如果之前给git配置过用户名和邮箱可跳过 查看Git是否配置成功:git config --list git config --global user.name "xxx"…