如何在 Pytest 中添加日志记录

简介: 在Pytest中添加日志记录可增强调试和问题排查。通过`pytest.ini`配置文件,设置`log_cli`、`log_cli_level`等参数来控制日志输出。测试用例中导入`logging`库,然后在测试函数中添加日志语句。默认日志显示在控制台,若需写入文件,可调整配置如`log_file`。这样,日志将在运行测试时按指定格式记录到控制台或文件,便于分析测试细节和错误。

在这里插入图片描述

前言

在编写和运行测试时,对于调试和排查问题,添加日志记录是一种非常有用的技术。Pytest 是一个流行的 Python 测试框架,开发者通过pytest可以轻松地编写和运行各种测试。本文将介绍如何在 Pytest 中添加日志记录,以便更好地理解测试执行过程中的细节和问题。

pytest.ini

我们之前有介绍过pytest.ini文件的使用,可以帮助我们更加方便的执行测试用例,pytest.ini中有单独为log日志增加的一些信息,如下图:

在这里插入图片描述

我们可以对pytest.ini文件做出如下配置:

[pytest]
log_cli = True      
log_cli_level = INFO   
log_cli_format = %(asctime)s [%(levelname)s] | %(filename)s:%(lineno)s | %(message)s       
log_cli_date_format = %Y-%m-%d %H:%M:%S

含义如下:

  • log_cli = True :表示是否实时打开log监测,默认为False

  • log_cli_level : 表示监测log日志等级显示

  • log_cli_format: 表示输出log日志显示格式

  • log_cli_date_format: 表示显示log时间

运行用例

在我们创建了pytest.ini文件之后,在测试用例编写时,我们需要导入logging库,我们的测试用例文件内容如下:

import logging


def test_demo():
    logging.info('这是测试用例01的info...')
    logging.warning('这是测试用例01的warning...')
    logging.error('这是测试用例01的error...')
    assert 1 == 1

运行用例后,控制台输出如下:

============================= test session starts =============================
collecting ... collected 1 item

test_demo.py::test_demo 
-------------------------------- live log call --------------------------------
2024-04-09 17:15:21 [INFO] | test_demo.py:5 | 这是测试用例01的info...
2024-04-09 17:15:21 [WARNING] | test_demo.py:6 | 这是测试用例01的warning...
2024-04-09 17:15:21 [ERROR] | test_demo.py:7 | 这是测试用例01的error...
PASSED                                                                   [100%]

============== 1 passed in 0.01s ================

如果我们不满足于日志只输出在控制台,想要输出成日志文件,我们可以修改pytest.ini文件,我们可以做出如下修改:

[pytest]
log_file =pytest_log.txt
log_file_level = INFO
log_file_date_format = %Y-%m-%d %H:%M:%S
log_file_format = %(asctime)s [ %(levelname)s ] %(filename)s:%(lineno)s | %(message)s

运行测试之后,我们可以看到项目中新生成了一个日志文件,内容如下:

2024-04-09 17:18:39 [ INFO ] test_demo.py:5 | 这是测试用例01的info...
2024-04-09 17:18:39 [ WARNING ] test_demo.py:6 | 这是测试用例01的warning...
2024-04-09 17:18:39 [ ERROR ] test_demo.py:7 | 这是测试用例01的error...

总结

本文主要介绍了如何在 Pytest 中添加日志记录,以便更好地理解和调试测试代码。可以根据自己的需求进一步配置和扩展日志记录功能,从而更加有效地编写和运行测试用例。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
测试技术
Pytest----如何正确使用pytest的日志功能
Pytest----如何正确使用pytest的日志功能
455 0
|
测试技术
Pytest----如何管理日志
Pytest----如何管理日志
639 0
|
2天前
|
安全 Linux 网络安全
/var/log/secure日志详解
Linux系统的 `/var/log/secure` 文件记录安全相关消息,包括身份验证和授权尝试。它涵盖用户登录(成功或失败)、`sudo` 使用、账户锁定解锁及其他安全事件和PAM错误。例如,SSH登录成功会显示"Accepted password",失败则显示"Failed password"。查看此文件可使用 `tail -f /var/log/secure`,但通常只有root用户有权访问。
161 4
|
2天前
|
运维 监控 数据可视化
日志服务 HarmonyOS NEXT 日志采集最佳实践
鸿蒙操作系统(HarmonyOS)上的日志服务(SLS)SDK 提供了针对 IoT、移动端到服务端的全场景日志采集、处理和分析能力,旨在满足万物互联时代下应用的多元化设备接入、高效协同和安全可靠运行的需求。
116797 10
|
2天前
|
监控 Linux 网络安全
/var/log/auth.log日志说明
`/var/log/auth.log`是Linux系统记录身份验证和授权事件的日志文件,包括登录尝试、SSH连接、sudo操作等。系统管理员可通过它监控用户登录、检查失败尝试、跟踪SSH活动、查看sudo/su操作及PAM活动。日志内容可能因系统配置而异,可能存在于其他日志文件中。分析这些日志可使用`tail`、`grep`等命令或专用日志分析工具。了解系统和其服务详情有助于提取有用信息。
63 2
|
2天前
|
C++
JNI Log 日志输出
JNI Log 日志输出
19 1
|
2天前
|
存储 运维 大数据
聊聊日志硬扫描,阿里 Log Scan 的设计与实践
泛日志(Log/Trace/Metric)是大数据的重要组成,伴随着每一年业务峰值的新脉冲,日志数据量在快速增长。同时,业务数字化运营、软件可观测性等浪潮又在对日志的存储、计算提出更高的要求。
|
2天前
|
XML Java Maven
Springboot整合与使用log4j2日志框架【详解版】
该文介绍了如何在Spring Boot中切换默认的LogBack日志系统至Log4j2。首先,需要在Maven依赖中排除`spring-boot-starter-logging`并引入`spring-boot-starter-log4j2`。其次,创建`log4j2-spring.xml`配置文件放在`src/main/resources`下,配置包括控制台和文件的日志输出、日志格式和文件切分策略。此外,可通过在不同环境的`application.yml`中指定不同的log4j2配置文件。最后,文章提到通过示例代码解释了日志格式中的各种占位符含义。
|
2天前
|
运维 监控 Go
Golang深入浅出之-Go语言中的日志记录:log与logrus库
【4月更文挑战第27天】本文比较了Go语言中标准库`log`与第三方库`logrus`的日志功能。`log`简单但不支持日志级别配置和多样化格式,而`logrus`提供更丰富的功能,如日志级别控制、自定义格式和钩子。文章指出了使用`logrus`时可能遇到的问题,如全局logger滥用、日志级别设置不当和过度依赖字段,并给出了避免错误的建议,强调理解日志级别、合理利用结构化日志、模块化日志管理和定期审查日志配置的重要性。通过这些实践,开发者能提高应用监控和故障排查能力。
89 1
|
2天前
|
弹性计算 运维 Shell

热门文章

最新文章