pytest 打印日志

本文介绍了如何在pytest测试框架中配置和打印日志,详细参考了两篇博客资源,包括logging配置和pytest中输出日志的方法。还提供了一个简单的example,并指导了在PyCharm中如何通过Additional Arguments设置来禁用标准输出捕获,启用命令行日志并设定日志级别为DEBUG。

详细可参考

logging配置

https://blog.youkuaiyun.com/zyz511919766/article/details/25136485

pytest中输出日志

https://www.cnblogs.com/landhu/p/9910460.html

简单的example

def test_logging():
    # logging.basicConfig(level=logging.DEBUG,
    #                     format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
    #                     datefmt='%a, %d %b %Y %H:%M:%S',
    #                     filename='/tmp/test.log',
    #                     filemode='w')
    logging.basicConfig(level=logging.DEBUG)
    logging.debug('debug message')
    logging.info('info message')
    logging.warning('warning message')
    logging.error('error message')
    logging.critical('critical message')

pycharm中的 Additional Arguments设置为 -s --capture=no -o log_cli=true -o log_cli_level=DEBUG

 

 

 

### 增加 pytest 日志输出的方法 在使用 `pytest` 执行测试时,若发现日志输出不完整,可以通过以下方式增加日志信息的打印: #### 1. 使用 `-v` 参数增强输出信息 `pytest` 提供了 `-v`(或 `--verbose`)参数,用于增强输出的详细程度。使用该参数可以显示更详细的测试用例名称和执行状态,从而帮助定位问题所在。例如: ```bash pytest -v ``` 此命令将输出每个测试用例的执行结果,包括 `PASSED`、`FAILED`、`SKIPPED` 等信息,通常直接打印到终端,而不是通过 `logging` 模块记录[^1]。 #### 2. 使用 `-s` 参数禁用标准输出捕获 默认情况下,`pytest` 会捕获标准输出(stdout)和标准错误(stderr),并仅在测试失败时显示相关输出。若希望实时查看测试过程中打印日志信息,可以使用 `-s` 参数禁用标准输出的捕获功能。例如: ```bash pytest -s ``` 此命令将允许测试过程中打印的所有日志信息直接输出到终端,便于调试[^2]。 #### 3. 在 `pytest.ini` 中配置日志输出文件 若希望将日志信息输出到文件中,可以在 `pytest.ini` 文件中进行配置。通过设置 `log_file`、`log_file_level`、`log_file_format` 等参数,可以指定日志文件的路径、日志级别和日志格式。例如: ```ini [pytest] log_file=../log/log.txt log_file_level=DEBUG log_file_format= %(asctime)s %(levelname)s %(message)s log_file_date_format = %Y-%m-%d %H:%M:%S ``` 此配置将日志信息写入 `../log/log.txt` 文件中,并设置日志级别为 `DEBUG`,日志格式包括时间戳、日志级别和日志消息[^4]。 #### 4. 使用 `caplog` 捕获日志信息 `pytest` 提供了 `caplog` 固件(fixture),用于捕获测试过程中生成的日志信息。通过 `caplog`,可以在测试用例中访问日志内容,并进行断言检查。例如: ```python def test_example(caplog): import logging logging.getLogger().info("This is an info message") assert "This is an info message" in caplog.text ``` 此测试用例将在执行过程中捕获日志信息,并验证日志内容是否符合预期[^3]。 #### 5. 禁用多线程插件以确保日志输出 若使用了 `pytest-xdist` 插件并启用了多线程执行(通过 `-n` 参数),可能会导致日志输出混乱或无法打印。为避免此类问题,可以禁用多线程配置,例如: ```bash pytest -n 1 --dist=loadscope ``` 此命令将使用单线程执行测试,确保日志信息能够正常输出。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值