pytest: 如何在被测试函数中显示 logging.debug 的消息

6 浏览
0 Comments

pytest: 如何在被测试函数中显示 logging.debug 的消息

假设我将上面的代码保存为func.py。当我运行pytest -s func.py时,我得到\" >>> print func info\"的输出。我想要得到\" >>> logger func info\"和\" >>> logger func warning\"的输出。我希望能够这样做的原因是,我通常在我的代码中插入logging.debug/info等语句。有时候,当我运行pytest时,我想看到由logging.debug/info发出的消息。我在网上搜索了很长时间,但找不到解决办法。提前感谢您的帮助。

0
0 Comments

pytest是一个功能强大的Python测试框架,它可以用于执行单元测试、集成测试和功能测试。在使用pytest进行测试时,有时我们希望能够看到来自被测试函数中的logging.debug()语句的输出信息。本文将介绍出现这个问题的原因以及解决方法。

问题的原因是pytest默认情况下不会显示来自被测试函数中的logging.debug()语句的输出信息。这是因为pytest的日志系统默认将日志级别设置为WARNING,而logging.debug()语句的日志级别为DEBUG。因此,pytest会忽略这些DEBUG级别的日志消息。

解决这个问题的方法是通过在命令行中使用一些参数来改变pytest的日志配置。具体来说,我们可以使用"--log-cli-level"参数来设置日志级别为DEBUG,并使用"--log-cli=true"参数来打开日志输出。这样,当执行pytest命令时,我们将能够看到来自被测试函数中的logging.debug()语句的输出信息。

下面是使用命令行解决这个问题的示例命令:

pytest -o log_cli=true --log-cli-level=10 func.py

在上面的示例命令中,"-o"参数用于设置pytest的配置项。"log_cli=true"表示打开日志输出,"--log-cli-level=10"表示将日志级别设置为DEBUG。func.py是我们要测试的函数所在的文件。

通过以上的命令,我们将能够在执行pytest时看到来自被测试函数中的logging.debug()语句的输出信息,这对于调试和定位问题非常有帮助。

总结起来,当我们希望在使用pytest进行测试时能够看到来自被测试函数中的logging.debug()语句的输出信息时,可以通过在命令行中使用"--log-cli-level"和"--log-cli=true"参数来改变pytest的日志配置。这样,我们将能够方便地调试和定位问题。

0
0 Comments

pytest中如何显示来自被测试函数中的logging.debug消息

在PyTest运行期间,我发现了这个线程,当我想要展开PyTest运行中的"warning summary"部分时。通过调整环境变量PYTHONWARNINGS可以帮助解决这个问题。具体可参考https://docs.python.org/3/using/cmdline.html#envvar-PYTHONWARNINGS

如果执行export PYTHONWARNINGS=error,你将看到警告的完整堆栈跟踪信息。然而,如果你正在运行一个测试套件,运行将会停止。

问题出现的原因:

在PyTest运行期间,当使用logging.debug记录调试消息时,默认情况下这些消息不会显示出来。然而,在调试过程中,有时我们希望能够查看这些消息以便更好地理解测试的执行过程。

解决方法:

要显示来自被测试函数中的logging.debug消息,可以通过以下步骤实现:

1. 使用环境变量PYTHONWARNINGS来控制警告消息的显示。具体来说,可以将PYTHONWARNINGS设置为"error",以便将警告作为错误处理并显示完整的堆栈跟踪信息。

2. 在命令行中执行以下命令,将PYTHONWARNINGS设置为"error":

export PYTHONWARNINGS=error

这样设置后,当运行PyTest时,将会显示来自被测试函数中的logging.debug消息,以及完整的堆栈跟踪信息。

需要注意的是,如果你正在运行一个测试套件,运行将会停止。因此,这种方法更适用于单个测试运行的情况。

0
0 Comments

问题的出现原因是想要在被测试的函数中显示logging.debug的消息,但是默认情况下pytest不会显示这些消息。解决方法是通过设置pytest.ini或使用命令行参数来启用日志显示。

首先,我们可以在pytest.ini文件中添加以下内容来设置pytest默认显示日志消息:

[pytest]

log_cli = true

log_cli_level = DEBUG

注意:如果使用的是很旧的pytest版本(3.5之前),则需要在pytest.ini中设置log_cli = true才能使用下面的命令。

对于3.5及更高版本的pytest,可以在命令行中使用以下命令来临时启用日志显示:

pytest --log-cli-level=10 func.py

或者更明确地指定日志级别为DEBUG:

pytest --log-cli-level=DEBUG func.py

需要注意的是,命令行参数始终会覆盖pytest.ini中的设置。

如果没有使用pytest.ini文件,也可以直接使用命令行参数来启用日志显示。

在日志级别方面,可以参考Python官方文档(https://docs.python.org/3/library/logging.html#levels)中提供的日志级别列表。建议使用级别名称而不是数字代码,例如:

pytest --log-cli-level=WARNING func.py

此外,还可以在pytest.ini文件中使用'log_cli_level'来设置日志级别,而不是通过命令行参数。在pytest.ini中确保使用'log_cli_level'而不是'log-cli-level',也可以使用'DEBUG'代替'10'。

总结起来,要在pytest中显示被测试函数中的logging.debug消息,可以通过设置pytest.ini文件或使用命令行参数来启用日志显示。通过在pytest.ini中设置'log_cli_level'或使用命令行参数'--log-cli-level'来指定日志级别。命令行参数将覆盖pytest.ini中的设置。推荐使用日志级别名称而不是数字代码。

0