pytest - 从运行测试的 CLI 命令指定日志级别

作者:编程家 分类: python 时间:2025-09-01

使用 pytest 运行测试时,我们可以通过 CLI 命令指定日志级别,这对于调试和排查问题非常有帮助。pytest 是一个功能强大的 Python 测试框架,可以轻松地运行单元测试、集成测试和端到端测试。在本文中,我们将探讨如何使用 pytest 的 CLI 命令来指定日志级别,并提供一些实际的案例代码来说明其用法。

在运行 pytest 命令时,我们可以使用 `-s` 参数来启用标准输出,这样可以打印出日志信息。然而,默认情况下,pytest 只会显示 `ERROR` 级别以上的日志信息。如果我们想要显示更多的日志信息,可以使用 `--log-cli-level` 参数来指定日志级别。这个参数后面可以跟着以下几个选项:`CRITICAL`、`ERROR`、`WARNING`、`INFO` 和 `DEBUG`。

下面是一个简单的示例代码:

python

import pytest

import logging

def test_logging():

logging.debug('This is a debug message')

logging.info('This is an info message')

logging.warning('This is a warning message')

logging.error('This is an error message')

logging.critical('This is a critical message')

pytest.main(['-s', '--log-cli-level=DEBUG'])

在上面的示例中,我们导入了 `pytest` 和 `logging` 模块,并定义了一个名为 `test_logging` 的测试函数。在这个函数中,我们使用了不同级别的日志记录语句来模拟不同类型的日志信息。最后,我们使用 `pytest.main` 函数来运行测试,并通过命令行参数 `-s` 启用了标准输出,以便打印日志信息。同时,我们通过 `--log-cli-level=DEBUG` 参数指定了日志级别为 `DEBUG`,这样就可以显示所有级别的日志信息。

使用不同的日志级别

在实际的测试中,我们通常会根据需要选择不同的日志级别。下面是一个更具体的例子:

python

import pytest

import logging

def test_calculation():

logging.debug('Starting calculation...')

# 进行一些复杂的计算

result = 2 + 2

logging.debug(f'Result: {result}')

logging.info('Calculation completed successfully.')

pytest.main(['-s', '--log-cli-level=INFO'])

在这个例子中,我们定义了一个名为 `test_calculation` 的测试函数。在这个函数中,我们首先使用 `debug` 级别的日志记录语句来表示计算开始的信息。然后,我们进行一些复杂的计算,并将结果保存在变量 `result` 中。接下来,我们使用 `debug` 级别的日志记录语句来打印计算结果。最后,我们使用 `info` 级别的日志记录语句来表示计算成功完成的信息。

在运行测试时,我们使用 `--log-cli-level=INFO` 参数来指定日志级别为 `INFO`。这样,只有 `info` 级别以上的日志信息会被显示出来。

通过 pytest 的 CLI 命令,我们可以方便地指定日志级别来控制日志信息的显示。这对于调试和排查问题非常有帮助。在本文中,我们介绍了如何使用 `--log-cli-level` 参数来指定日志级别,并提供了一些实际的案例代码来说明其用法。希望这些内容对你有所帮助!