pytest日志总结
pytest日志分为两类:
一、终端(控制台)打印的日志
1、指定-s,脚本中print打印出的信息会显示在终端;
2、pytest打印的summary信息,这部分是pytest 的默认输出(例如测试结果PASSED, FAILED, SKIPPED, warnings等)的,通常是直接打印到终端,而不是通过 logging 记录。
二、使用logging模块打印的信息
例如,指定的--log-file,只捕获 logging 模块的日志,在代码中要在关键处或想记录日志的地方(或者是在你写print的地方)使用logging.getLogger()记录:
import logginglogger = logging.getLogger(__name__)def test_login():try:rsp = requests.post(url, headers=HEADERS, data=data, timeout=(10, 10), verify=False)rsp.raise_for_status()g1_sid = rsp.json().get('data', {}).get('sid')g1_uid = rsp.json().get('data', {}).get('uid')decode_body = unquote(rsp.request.body.decode('utf-8') if isinstance(rsp.request.body, bytes) else rsp.request.body)logger.info("==== HTTP Request ====")logger.info(f"URL: {url}")logger.info(f"Method: POST")logger.info(f"Headers: {rsp.request.headers}")logger.info(f"Body: {decode_body}")logger.info("==== HTTP Response ====")logger.info(f"Status Code: {rsp.status_code}")logger.info(f"Body: {rsp.text}")return g1_sid, g1_uidexcept requests.RequestException as e:print(f"Request failed: {e}")logger.error(f"Request failed: {e}")return None, None
通过logging模块记录日志,可以在pytest.ini中进行配置,例如:
[pytest]
log_cli = false
log_cli_level = INFOlog_format = %(asctime)s %(levelname)s %(name)s %(funcName)s %(lineno)d %(message)slog_date_format = %Y-%m-%d %H:%M:%Slog_file = pytest_project_log.txt
log_file_level = INFO
log_cli:打印在终端,即记录在文件里的日志也会原样的打印在终端上;
log_cli_level:日志级别
%(asctime)s:当前时间
%(levelname)s:日志级别
%(name)s:Logger的名称(通常是模块名或者类名)
%(funcName)s:当前执行的方法名
%(lineno)d:日志输出所在行号
%(message)s:日志信息内容
%(module)s:模块名称
%(pathname)s:文件的完整路径
%(threadName)s:当前线程名称
log_date_format:时间格式
log_file:日志文件名称
log_file_level:日志级别
具体内容是这样:

如果在pytest.ini中进行了配置,那么在pytest命令行中就不用指定--log-file 和 --log-level了,这样命令行就简化一些了,例如:
pytest -q -s -ra --count=3 test_open_stream.py --alluredir=./report/CXL/resource
注:如果在代码中没有引入logging模块,或者引入了logging模块,没有使用logging.getLogger()记录日志,仅在命令行中指定--log-file和--log-level在日志文件中是不能记录日志的。
注:如果配置文件和命令行中同时指定了日志级别,以命令行指定的级别优先
日志的级别从低到高依次是:debug、info、warning、error、critical
【总结】
pytest的summary日志是输出在控制台的,需要单独保存,保存方法可以用之前提到的tee和重定向;脚本的运行日志需要引入logger模块,并在关键地方使用logger.getLogger()记录,保存在日志文件中,这两部分日志是分开处理的。
相关文章:
pytest日志总结
pytest日志分为两类: 一、终端(控制台)打印的日志 1、指定-s,脚本中print打印出的信息会显示在终端; 2、pytest打印的summary信息,这部分是pytest 的默认输出(例如测试结果PASSED, FAILED, S…...
day16
目录 1 联合体的定义和使用 2 联合体的内存布局 3 联合体的应用 1 联合体的定义和使用 #include <iostream>using namespace std;struct DataS {int i; double d; char s[10]; };/*联合体 所有成员共享同一段内存 修改一个成员会影响其他成员 { */ union DataU {int…...
医工交叉入门书籍分享:Transformer模型在机器学习领域的应用|个人观点·24-11-22
小罗碎碎念 今天给大家推荐一本入门书籍。 这本书由Uday Kamath、Kenneth L. Graham和Wael Emara撰写,深入探讨了Transformer模型在机器学习领域的应用,特别是自然语言处理(NLP)。 原文pdf已经上传至知识星球的【入门书籍】专栏&…...
【读书】复杂性意义结构框架——Cynefin框架
Cynefin框架 《代码大全》的作者史蒂夫麦克康奈尔(Steve McConnell)在《卓有成效的敏捷》这本书里,探讨了用于理解不确定性和复杂性的Cynefin框架。 Cynefin框架是戴维斯诺登(David Snowden)20世纪90年代的在IBM时创…...
Python模块、迭代器与正则表达式day10
1、Python模块 1.1模块的简介 在编写代码的时候,创建的.py文件就被称为一个模块 1.2模块的使用 想要在a文件里使用b文件的时候,只要在a文件中使用关键字import导入即可 1.2.2 from ...import...语句 导入模块可以使用import,如果只导入模…...
Hutool工具类生成二维码
1、引入依赖 <dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.3.3</version></dependency><dependency><groupId>cn.hutool</groupId><artifactId>hutoo…...
wpf 事件转命令的方式
1,方式1 <StackPanel Background"Transparent"><StackPanel.InputBindings><KeyBinding Command"{Binding ChangeColorCommand}"CommandParameter"{Binding ElementNamecolorPicker, PathSelectedItem}"Key"{Bi…...
第二十八章 TCP 客户端 服务器通信 - JOB命令示例
文章目录 第二十八章 TCP 客户端 服务器通信 - JOB命令示例JOB命令示例 第二十八章 TCP 客户端 服务器通信 - JOB命令示例 JOB命令示例 以下示例显示了一个非常简单的并发服务器,只要它检测到来自客户端的连接,就会产生一个子作业。 JOB指定一个并发服…...
「Mac玩转仓颉内测版19」PTA刷题篇10 - L1-010 比较大小
本篇将继续讲解PTA平台上的题目 L1-010 比较大小,通过对三个整数的排序,进一步提升Cangjie编程语言的数组操作与逻辑处理能力。 关键词 PTA刷题数字排序条件判断Cangjie语言 一、L1-010 比较大小 题目描述:给定3个整数,要求将它…...
C++趣味编程玩转物联网:用树莓派Pico实现一位数码管动态显示
七段数码管是一种经典的电子显示器件,广泛应用于数字时钟、电子仪表等设备。本文将通过树莓派Pico开发板,介绍如何用C代码控制一位七段数码管显示数字。作为一个嵌入式开发项目,这不仅是初学者理解数码管工作原理的好机会,也是C开…...
SPA 单页面深入解读:优劣势剖析及实现方法
SPA(Single Page Application)单页面应用 什么是 SPA? SPA(Single Page Application,单页面应用)是一种 Web 应用程序,它通过 JavaScript 动态更新单一页面上的内容,而不是像传统的多页面应用程序那样每次用户与应用交互时都请求一个新的 HTML 页面。通过使用 AJAX 请…...
机器学习系列----关联分析
目录 1. 关联分析的基本概念 1.1定义 1.2常用算法 2.Apriori 算法的实现 2.1 工作原理 2.2 算法步骤 2.3 优缺点 2.4 时间复杂度 2.5实际运用----市场购物篮分析 3. FP-Growth 算法 3.1 工作原理 3.2 算法步骤 3.3 优缺点 3.4 时间复杂度 3.5实际运用——网页点…...
json数据四大加载方式
效果: 一、使用 import 静态加载 JSON 原理 使用 ES 模块的 import 语法直接引入 JSON 文件。Webpack/Vite 等构建工具会将 JSON 文件解析成 JavaScript 对象。 优点 简单直接,适合静态数据。不需要额外的网络请求。数据会随着打包文件一起部署。 缺点 J…...
JavaScript 中的数组(Array)对象的内置方法
JavaScript 中的数组(Array)对象提供了许多内置方法,用于对数组进行创建、操作、遍历和搜索等操作。以下是一些常用的数组方法及其简要说明: 创建和初始化数组 Array(): 创建一个新的空数组,或者根据提供的参数创建一…...
网络安全之国际主流网络安全架构模型
目前,国际主流的网络安全架构模型主要有: ● 信息技术咨询公司Gartner的ASA(Adaptive Security Architecture自适应安全架构) ● 美国政府资助的非营利研究机构MITRE的ATT&CK(Adversarial Tactics Techniques &…...
电子应用设计方案-16:智能闹钟系统方案设计
智能闹钟系统方案设计 一、系统概述 本智能闹钟系统旨在为用户提供更加个性化、智能化和便捷的闹钟服务,帮助用户更有效地管理时间和起床。 二、系统组成 1. 微控制器 - 选用低功耗、高性能的微控制器,如 STM32 系列,负责整个系统的控制和数据…...
【FRP 内网穿透 从0到1 那些注意事项】
【摘要】 最近跟第三方团队调试问题,遇到一个比较烦的操作。就是,你必须要发个版到公网环境,他们才能链接到你的接口地址,才能进行调试。按理说,也没啥,就是费点时间。但是,在调试的时候&#…...
力扣 LRU缓存-146
LRU缓存-146 /* 定义双向链表节点,用于存储缓存中的每个键值对。 成员变量:key和value存储键值对。preb和next指向前一个和后一个节点,形成双向链表。 构造函数:默认构造函数:初始化空节点。参数化构造函数࿱…...
Elasticsearch简介与实操
Elasticsearch是一个分布式、高扩展、高实时的搜索与数据分析引擎。以下是对Elasticsearch的详细介绍: 一、基本概述 Elasticsearch是Elastic Stack(以前称为ELK Stack)的核心组件,Logstash和Beats有助于收集、聚合和丰富数据并将…...
用python将一个扫描pdf文件改成二值图片组成的pdf文件
使用墨水屏读书现在似乎越来越流行,这确实有一定的好处,例如基本不发热,电池续航时间超长,基本不能游戏所以有利于沉浸式阅读,还有不知道是不是真的有用的所谓防蓝光伤害。但是,如果阅读的书籍是扫描图片组…...
好写作AI:本科毕业论文的“通关秘籍制造机”
对于众多本科生而言,撰写毕业论文就像是一场艰难的“冒险之旅”,从选题时的迷茫,到内容创作的绞尽脑汁,再到格式调整的繁琐,每一步都充满挑战。不过别担心,好写作AI(官网:https://ww…...
禅道最新22.0+ 手动删除无法安装之清理卸载办法
禅道项目管理软件卸载方法详解:如何彻底清除所有相关文件和配置在企业或个人开发环境中,禅道(Zentao)作为一款广受欢迎的开源项目管理工具,因其功能全面、易用性强而被广泛使用。然而,在某些情况下…...
memtest_vulkan显存检测终极指南:从问题识别到健康管理
memtest_vulkan显存检测终极指南:从问题识别到健康管理 【免费下载链接】memtest_vulkan Vulkan compute tool for testing video memory stability 项目地址: https://gitcode.com/gh_mirrors/me/memtest_vulkan 一、显存故障问题识别:图形渲染异…...
重塑暗黑2单机体验:d2s-editor 3大革新功能与技术解析
重塑暗黑2单机体验:d2s-editor 3大革新功能与技术解析 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor d2s-editor 是一款开源的暗黑2存档编辑工具,通过直观的图形界面实现角色属性调整、装备管理和高级合…...
ComfyUI插件管理工具:构建稳定高效的AI创作环境
ComfyUI插件管理工具:构建稳定高效的AI创作环境 【免费下载链接】ComfyUI-Manager ComfyUI-Manager is an extension designed to enhance the usability of ComfyUI. It offers management functions to install, remove, disable, and enable various custom node…...
重构文献预览体验:Zotero PDF Preview让学术效率提升70%的无缝解决方案
重构文献预览体验:Zotero PDF Preview让学术效率提升70%的无缝解决方案 【免费下载链接】zotero-pdf-preview Preview Zotero attachments in the library view. 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-pdf-preview 一、场景化痛点:…...
STM32F103ZET6【标准库函数开发】-----TM1638模块驱动4位8段共阴极数码管
1. 硬件环境搭建 第一次接触TM1638模块时,我手头正好有块吃灰的正点原子战舰开发板。这个组合对初学者特别友好,就像乐高积木一样容易上手。先说说需要准备的硬件清单: 正点原子STM32F103ZET6开发板(其他型号也行,但引…...
如何快速掌握Outfit字体:5个简单技巧打造专业级设计
如何快速掌握Outfit字体:5个简单技巧打造专业级设计 【免费下载链接】Outfit-Fonts The most on-brand typeface 项目地址: https://gitcode.com/gh_mirrors/ou/Outfit-Fonts Outfit字体是一款专业的开源无衬线字体,提供从Thin到Black的9种完整字…...
mPLUG模型隐私保护展示:本地化部署的数据安全优势
mPLUG模型隐私保护展示:本地化部署的数据安全优势 1. 数据安全新选择:本地化部署的价值 在当今数据驱动的时代,隐私保护已经成为企业和个人用户最关心的问题之一。传统的云端AI服务虽然方便,但用户数据需要上传到第三方服务器&a…...
终极文档下载神器:一键获取全网免费文档的完整指南
终极文档下载神器:一键获取全网免费文档的完整指南 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档,但是相关网站浏览体验不好各种广告,各种登录验证,需要很多步骤才能下载文档,该脚本就是为了解决…...
