如何在 Pytest 中添加日志记录

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 在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----如何管理日志
688 0
|
测试技术
Pytest----如何正确使用pytest的日志功能
Pytest----如何正确使用pytest的日志功能
517 0
|
11天前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
116 30
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
1月前
|
XML JSON Java
Logback 与 log4j2 性能对比:谁才是日志框架的性能王者?
【10月更文挑战第5天】在Java开发中,日志框架是不可或缺的工具,它们帮助我们记录系统运行时的信息、警告和错误,对于开发人员来说至关重要。在众多日志框架中,Logback和log4j2以其卓越的性能和丰富的功能脱颖而出,成为开发者们的首选。本文将深入探讨Logback与log4j2在性能方面的对比,通过详细的分析和实例,帮助大家理解两者之间的性能差异,以便在实际项目中做出更明智的选择。
216 3
|
3月前
|
Kubernetes Ubuntu Windows
【Azure K8S | AKS】分享从AKS集群的Node中查看日志的方法(/var/log)
【Azure K8S | AKS】分享从AKS集群的Node中查看日志的方法(/var/log)
131 3
|
1月前
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
1625 14
|
1月前
|
Python
log日志学习
【10月更文挑战第9天】 python处理log打印模块log的使用和介绍
30 0
|
1月前
|
数据可视化
Tensorboard可视化学习笔记(一):如何可视化通过网页查看log日志
关于如何使用TensorBoard进行数据可视化的教程,包括TensorBoard的安装、配置环境变量、将数据写入TensorBoard、启动TensorBoard以及如何通过网页查看日志文件。
193 0
|
1月前
|
存储 分布式计算 NoSQL
大数据-136 - ClickHouse 集群 表引擎详解1 - 日志、Log、Memory、Merge
大数据-136 - ClickHouse 集群 表引擎详解1 - 日志、Log、Memory、Merge
40 0
|
1月前
|
缓存 Linux 编译器
【C++】CentOS环境搭建-安装log4cplus日志组件包及报错解决方案
通过上述步骤,您应该能够在CentOS环境中成功安装并使用log4cplus日志组件。面对任何安装或使用过程中出现的问题,仔细检查错误信息,对照提供的解决方案进行调整,通常都能找到合适的解决之道。log4cplus的强大功能将为您的项目提供灵活、高效的日志管理方案,助力软件开发与维护。
54 0