当前位置: 首页 > news >正文

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撰写&#xff0c;深入探讨了Transformer模型在机器学习领域的应用&#xff0c;特别是自然语言处理&#xff08;NLP&#xff09;。 原文pdf已经上传至知识星球的【入门书籍】专栏&…...

【读书】复杂性意义结构框架——Cynefin框架

Cynefin框架 《代码大全》的作者史蒂夫麦克康奈尔&#xff08;Steve McConnell&#xff09;在《卓有成效的敏捷》这本书里&#xff0c;探讨了用于理解不确定性和复杂性的Cynefin框架。 Cynefin框架是戴维斯诺登&#xff08;David Snowden&#xff09;20世纪90年代的在IBM时创…...

Python模块、迭代器与正则表达式day10

1、Python模块 1.1模块的简介 在编写代码的时候&#xff0c;创建的.py文件就被称为一个模块 1.2模块的使用 想要在a文件里使用b文件的时候&#xff0c;只要在a文件中使用关键字import导入即可 1.2.2 from ...import...语句 导入模块可以使用import&#xff0c;如果只导入模…...

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&#xff0c;方式1 <StackPanel Background"Transparent"><StackPanel.InputBindings><KeyBinding Command"{Binding ChangeColorCommand}"CommandParameter"{Binding ElementNamecolorPicker, PathSelectedItem}"Key"{Bi…...

第二十八章 TCP 客户端 服务器通信 - JOB命令示例

文章目录 第二十八章 TCP 客户端 服务器通信 - JOB命令示例JOB命令示例 第二十八章 TCP 客户端 服务器通信 - JOB命令示例 JOB命令示例 以下示例显示了一个非常简单的并发服务器&#xff0c;只要它检测到来自客户端的连接&#xff0c;就会产生一个子作业。 JOB指定一个并发服…...

「Mac玩转仓颉内测版19」PTA刷题篇10 - L1-010 比较大小

本篇将继续讲解PTA平台上的题目 L1-010 比较大小&#xff0c;通过对三个整数的排序&#xff0c;进一步提升Cangjie编程语言的数组操作与逻辑处理能力。 关键词 PTA刷题数字排序条件判断Cangjie语言 一、L1-010 比较大小 题目描述&#xff1a;给定3个整数&#xff0c;要求将它…...

C++趣味编程玩转物联网:用树莓派Pico实现一位数码管动态显示

七段数码管是一种经典的电子显示器件&#xff0c;广泛应用于数字时钟、电子仪表等设备。本文将通过树莓派Pico开发板&#xff0c;介绍如何用C代码控制一位七段数码管显示数字。作为一个嵌入式开发项目&#xff0c;这不仅是初学者理解数码管工作原理的好机会&#xff0c;也是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数据四大加载方式

效果&#xff1a; 一、使用 import 静态加载 JSON 原理 使用 ES 模块的 import 语法直接引入 JSON 文件。Webpack/Vite 等构建工具会将 JSON 文件解析成 JavaScript 对象。 优点 简单直接&#xff0c;适合静态数据。不需要额外的网络请求。数据会随着打包文件一起部署。 缺点 J…...

JavaScript 中的数组(Array)对象的内置方法

JavaScript 中的数组&#xff08;Array&#xff09;对象提供了许多内置方法&#xff0c;用于对数组进行创建、操作、遍历和搜索等操作。以下是一些常用的数组方法及其简要说明&#xff1a; 创建和初始化数组 Array(): 创建一个新的空数组&#xff0c;或者根据提供的参数创建一…...

网络安全之国际主流网络安全架构模型

目前&#xff0c;国际主流的网络安全架构模型主要有&#xff1a; ● 信息技术咨询公司Gartner的ASA&#xff08;Adaptive Security Architecture自适应安全架构&#xff09; ● 美国政府资助的非营利研究机构MITRE的ATT&CK&#xff08;Adversarial Tactics Techniques &…...

电子应用设计方案-16:智能闹钟系统方案设计

智能闹钟系统方案设计 一、系统概述 本智能闹钟系统旨在为用户提供更加个性化、智能化和便捷的闹钟服务&#xff0c;帮助用户更有效地管理时间和起床。 二、系统组成 1. 微控制器 - 选用低功耗、高性能的微控制器&#xff0c;如 STM32 系列&#xff0c;负责整个系统的控制和数据…...

【FRP 内网穿透 从0到1 那些注意事项】

【摘要】 最近跟第三方团队调试问题&#xff0c;遇到一个比较烦的操作。就是&#xff0c;你必须要发个版到公网环境&#xff0c;他们才能链接到你的接口地址&#xff0c;才能进行调试。按理说&#xff0c;也没啥&#xff0c;就是费点时间。但是&#xff0c;在调试的时候&#…...

力扣 LRU缓存-146

LRU缓存-146 /* 定义双向链表节点&#xff0c;用于存储缓存中的每个键值对。 成员变量&#xff1a;key和value存储键值对。preb和next指向前一个和后一个节点&#xff0c;形成双向链表。 构造函数&#xff1a;默认构造函数&#xff1a;初始化空节点。参数化构造函数&#xff1…...

Elasticsearch简介与实操

Elasticsearch是一个分布式、高扩展、高实时的搜索与数据分析引擎。以下是对Elasticsearch的详细介绍&#xff1a; 一、基本概述 Elasticsearch是Elastic Stack&#xff08;以前称为ELK Stack&#xff09;的核心组件&#xff0c;Logstash和Beats有助于收集、聚合和丰富数据并将…...

用python将一个扫描pdf文件改成二值图片组成的pdf文件

使用墨水屏读书现在似乎越来越流行&#xff0c;这确实有一定的好处&#xff0c;例如基本不发热&#xff0c;电池续航时间超长&#xff0c;基本不能游戏所以有利于沉浸式阅读&#xff0c;还有不知道是不是真的有用的所谓防蓝光伤害。但是&#xff0c;如果阅读的书籍是扫描图片组…...

Godot RTS开发实战:从导航到建造的原子化实现

1. 为什么“从零开始玩转Godot RTS引擎”不是一句空话&#xff0c;而是真能落地的开发路径很多人看到“RTS”两个字母就下意识缩手——星际争霸、帝国时代、红色警戒这些名字背后是庞大的系统、复杂的寻路、海量单位同步、资源采集逻辑、建造队列、科技树、视野遮蔽……一连串术…...

AI Agent与RPA的融合:智能自动化新范式

AI Agent与RPA的融合:智能自动化新范式 关键词:AI Agent、RPA、智能自动化、融合技术、自主决策、业务流程优化、人机协作 摘要:本文深入探讨了AI Agent与RPA(机器人流程自动化)的融合,揭示了这一技术组合如何开创智能自动化的新范式。我们将通过生动的类比和详细的技术解…...

【bash】git-bash windows 配置ssh免密登录ubuntu

需要一台ubuntu机器,长期运行 作为代理服务器,帮我访问github等白名单网络。 期望端口映射,长期运行。 在 Git Bash 环境下 在 Git Bash 环境下!Git Bash 确实完美支持 ~ 符号,而且我看到你的 ~/.ssh/ 目录下,id_ed25519.pub 已经静静地躺在那里了。 既然文件都在,而且…...

透明化智慧港口码头•装载·存储·集散全流程透明化管控方案

一、方案前言本方案依托黎阳之光镜像孪生、时空AI拓扑、无感全域定位、视频实景融合、边缘实时算力五大核心技术&#xff0c;聚焦港口码头货物装载、堆场存储、集疏运集散三大核心业务&#xff0c;打造实景可视、数字镜像、智能调度、全程透明、风险可控、全程可溯的智慧管控体…...

【ElevenLabs潮州话语音实战指南】:20年语音AI专家亲授3大落地陷阱与5步合规部署法

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;ElevenLabs潮州话语音技术全景概览 ElevenLabs 作为全球领先的语音合成平台&#xff0c;长期聚焦于高保真、多语言、情感化TTS技术研发。尽管其官方公开支持的语言列表尚未正式纳入潮州话&#xff08;Teochew&…...

Godot 4.3+生产级3D反向运动学(IK)系统实战指南

1. 这不是“加个插件就动起来”的玩具&#xff0c;而是能进生产管线的IK系统 在Godot社区里&#xff0c;“反向运动学”这个词被提得太多&#xff0c;也太轻了。我见过太多人把 Skeleton3D 拖进场景&#xff0c;点开 IK 节点属性&#xff0c;勾上“启用”&#xff0c;然后…...

0602光刻机 第六篇:EUV超精密光学系统(S级 长期死磕突破)超精密反射镜技术壁垒

第2小节&#xff1a;超精密反射镜技术壁垒&#xff08;基底加工镀膜检测&#xff0c;全量化死磕&#xff09;前置硬核声明EUV整机90%的成像误差、波像差、良率波动&#xff0c;最终全部归因于超精密反射镜的制造壁垒。EUV不是“普通光学抛光”&#xff0c;是原子级表面重构、皮…...

意识的“调谐客观还原”理论

“调谐客观还原”理论&#xff0c;通常称为 Orch-OR&#xff0c;是诺贝尔物理学奖得主罗杰彭罗斯与麻醉学家斯图尔特哈梅罗夫于20世纪90年代初提出的一种极具争议的意识假说。该理论的核心观点是&#xff1a;意识并非产生于神经元之间的经典电化学连接&#xff0c;而是源于神经…...

ElevenLabs芬兰语TTS部署踩坑实录(含CI/CD流水线集成模板):1次失败=2.3小时调试,我们帮你省下87%时间

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;ElevenLabs芬兰语TTS部署踩坑实录&#xff08;含CI/CD流水线集成模板&#xff09;&#xff1a;1次失败2.3小时调试&#xff0c;我们帮你省下87%时间 核心痛点&#xff1a;芬兰语语音合成的隐性陷阱 ElevenLab…...

泛微发布300+可落地AI应用 让组织业务数智升级

5月20日&#xff0c;泛微300AI应用场景体验大会在上海举办。大会以“组织的AI范式数字员工与业务流程AI新生”为主题&#xff0c; 展示泛微全场景AI应用。泛微搭载五大智能引擎&#xff0c;提供300可快速落地的AI应用场景&#xff0c;覆盖市场、销售、项目、合同、采购、财务、…...