【发布时间】:2018-06-14 11:32:37
【问题描述】:
我正在为我的 Python 应用程序编写功能测试。我在我正在测试的代码中使用 Python 标准日志记录包。在我的单元测试中,我模拟了日志包,但对于功能测试,我想测试两件事:
- 日志格式正确 - 我可以检查一下 -
- 日志被发送到标准输出 - 这是我有点迷路的地方 -
我能够捕获日志并检查消息是否正确。这是我正在使用的代码:
with assertLogs('', level='INFO') as captured_logs:
do_something()
assertEqual(captured_logs.records[0].msg, "expected message")
这很好,但我只是在测试我的第 1 点,生成日志并且消息符合预期。
我的问题是如何测试这些日志实际上是发送到标准输出而不是发送到文件或标准错误等?
编辑:
要测试的代码示例可以是
import logging
def do_something():
logging.warning("expected message")
测试该代码的结果将是测试通过,因为记录的消息是预期的。但是,无论日志是转到文件还是sys.stdout 或sys.stderr,它都会通过...我的问题是我需要在测试代码中添加什么以确保测试仅在日志时通过消息进入标准输出
谢谢!!
【问题讨论】:
-
你能提供一个被测代码的例子吗?
标签: python python-unittest functional-testing