Pytest----如何正确使用pytest的日志功能

简介: Pytest----如何正确使用pytest的日志功能

一、在pytest.ini配置如下配置

cli live log 部分配置是实时日志,即自动化脚本执行的过程中实时输出,方便调试脚本使用,capture log则是当脚本失败了,会在执行日志的最后将失败的用例中的日志打印输出,便于定位失败的脚本,尤其在执行大量的脚本时,实时日志很难找到报错的位置,capture log则把失败的日志在最后重新打印一遍,如此则非常方便问题定位

[pytest]
# cli live log
log_cli = True
log_cli_level = info
log_cli_format = %(asctime)s %(levelname)s %(message)s
log_cli_date_format = %Y-%m-%d %H:%M:%S
# capture log
log_format = %(asctime)s %(levelname)s %(message)s
log_date_format = %Y-%m-%d %H:%M:%S
log_level = info

二、脚本中使用方法

直接导入logging,然后直接调用logging的info,error,warnning等方法写日志即可,如下演示一个成功的测试函数,一个失败的测试函数,capture log只会捕获失败的用例的日志

import logging

def test_func1():
    logging.info("info log in test_func1...")
    logging.error("error log in test_func1...")
    logging.warning("warnning log in test_func1...")

def test_func2():
    logging.info("info log in test_func2...")
    logging.error("error log in test_func2...")
    logging.warning("warnning log in test_func2...")
    assert 1==2

执行结果如下:

$ pytest
========================================================================= test session starts ==========================================================================
platform win32 -- Python 3.9.7, pytest-6.2.5, py-1.10.0, pluggy-1.0.0
rootdir: D:\src\blog\tests, configfile: pytest.ini
plugins: allure-pytest-2.9.43, caterpillar-pytest-0.0.2, hypothesis-6.31.6, forked-1.3.0, rerunfailures-10.1, xdist-2.3.0
collected 2 items                                                                                                                                                       

test_demo.py::test_func1
---------------------------------------------------------------------------- live log call -----------------------------------------------------------------------------
2021-12-28 10:21:51 INFO info log in test_func1...
2021-12-28 10:21:51 ERROR error log in test_func1...
2021-12-28 10:21:51 WARNING warnning log in test_func1...
PASSED                                                                                                                                                            [ 50%]
test_demo.py::test_func2
---------------------------------------------------------------------------- live log call -----------------------------------------------------------------------------
2021-12-28 10:21:51 INFO info log in test_func2...
2021-12-28 10:21:51 ERROR error log in test_func2...
2021-12-28 10:21:51 WARNING warnning log in test_func2...
FAILED                                                                                                                                                            [100%]

=============================================================================== FAILURES ===============================================================================
______________________________________________________________________________ test_func2 ______________________________________________________________________________

    def test_func2():
        logging.info("info log in test_func2...")
        logging.error("error log in test_func2...")
        logging.warning("warnning log in test_func2...")
>       assert 1==2
E       assert 1 == 2
E         +1
E         -2

test_demo.py:12: AssertionError
-------------------------------------------------------------------------- Captured log call ---------------------------------------------------------------------------
2021-12-28 10:21:51 INFO info log in test_func2...
2021-12-28 10:21:51 ERROR error log in test_func2...
2021-12-28 10:21:51 WARNING warnning log in test_func2...
======================================================================= short test summary info ========================================================================
FAILED test_demo.py::test_func2 - assert 1 == 2
===================================================================== 1 failed, 1 passed in 0.12s ======================================================================
相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
存储 Go
Go 浅析主流日志库:从设计层学习如何集成日志轮转与切割功能
本文将探讨几个热门的 go 日志库如 logrus、zap 和官网的 slog,我将分析这些库的的关键设计元素,探讨它们是如何支持日志轮转与切割功能的配置。
553 0
Go 浅析主流日志库:从设计层学习如何集成日志轮转与切割功能
|
Rust 前端开发 JavaScript
Tauri 开发实践 — Tauri 日志记录功能开发
本文介绍了如何为 Tauri 应用配置日志记录。Tauri 是一个利用 Web 技术构建桌面应用的框架。文章详细说明了如何在 Rust 和 JavaScript 代码中设置和集成日志记录,并控制日志输出。通过添加 `log` crate 和 Tauri 日志插件,可以轻松实现多平台日志记录,包括控制台输出、Webview 控制台和日志文件。文章还展示了如何调整日志级别以优化输出内容。配置完成后,日志记录功能将显著提升开发体验和程序稳定性。
743 1
Tauri 开发实践 — Tauri 日志记录功能开发
|
9月前
|
存储 SQL Oracle
|
9月前
|
运维 监控 虚拟化
除了实时性能监控,Hyper-V还支持日志记录和警报功能你知道吗?
Hyper-V不仅支持实时性能监控,还具备强大的日志记录和警报功能。通过事件查看器可访问详细的日志文件,涵盖虚拟机管理、配置及Hypervisor事件,帮助故障排查和性能分析。警报功能支持预定义和自定义规则,可通过多种方式通知管理员,确保及时响应问题,保障虚拟化环境的稳定运行。
|
数据采集 分布式计算 监控
日志服务功能特性
日志服务功能特性
171 7
|
12月前
|
监控 安全 Linux
启用Linux防火墙日志记录和分析功能
为iptables启用日志记录对于监控进出流量至关重要
411 1
|
存储 监控 数据可视化
SLS 虽然不是直接使用 OSS 作为底层存储,但它凭借自身独特的存储架构和功能,为用户提供了一种专业、高效的日志服务解决方案。
【9月更文挑战第2天】SLS 虽然不是直接使用 OSS 作为底层存储,但它凭借自身独特的存储架构和功能,为用户提供了一种专业、高效的日志服务解决方案。
522 9
|
存储 监控 Serverless
函数计算发布功能问题之用户在使用主流函数计算产品的日志服务时可能会遇到使用成本的问题如何解决
函数计算发布功能问题之用户在使用主流函数计算产品的日志服务时可能会遇到使用成本的问题如何解决
177 6
|
监控 Serverless 开发者
函数计算发布功能问题之查看函数的调用日志的问题如何解决
函数计算发布功能问题之查看函数的调用日志的问题如何解决
147 1
|
Python
Python编程实战:利用闭包与装饰器优化日志记录功能
【7月更文挑战第7天】Python的闭包和装饰器简化了日志记录。通过定义如`log_decorator`的装饰器,可以在不修改原函数代码的情况下添加日志功能。当@log_decorator用于`add(x, y)`函数时,调用时自动记录日志。进一步,`timestamp_log_decorator`展示了如何创建特定功能的装饰器,如添加时间戳。这些技术减少了代码冗余,提高了代码的可维护性。
233 1