我想你缺少的是
log_cli = 1
(或)
true
/
yes
/等)在你的
pytest.ini
. 除此之外,通过提供的配置,日志记录将以您在中指定的格式打印
log_cli_format
. 你甚至可以减少
pytest.ini文件
到:
[pytest]
log_cli = 1
log_cli_level = INFO
log_cli_format = %(asctime)s %(levelname)s %(message)s
log_cli_date_format = %H:%M:%S
另外,上面的配置将负责测试会话中的根日志记录器配置,因此您不需要在测试中为实时日志记录配置日志记录器。只需在测试中调用记录器:
import logging
def test_spam():
logger = logging.getLogger(__name__)
logger.info('spam')
logger.warning('eggs')
logger.error('bacon')
这将打印:
$ pytest
============================== test session starts ================================
platform linux -- Python 3.6.5, pytest-3.4.1, py-1.5.3, pluggy-0.6.0 -- /data/gentoo64/usr/bin/python3.6
cachedir: .pytest_cache
rootdir: /data/gentoo64/home/u0_a82/projects/stackoverflow/so-50677656, inifile: pytest.ini
plugins: mock-1.6.3, cov-2.5.1, flaky-3.4.0
collected 1 item
testing/tests/test_docker.py::test_logs
---------------------------------- live log call ----------------------------------
16:29:12 INFO spam
16:29:13 WARNING eggs
16:29:13 ERROR bacon
PASSED [100%]
============================ 1 passed in 1.08 seconds =============================
首先我想知道asctime代表什么
这个
logging docs
有点简洁:
创建日志记录时的人类可读时间。默认情况下,格式为2003-07-08 16:49:45896(逗号后面的数字是时间的毫秒部分)。
然而,
asctime
并不意味着记录将始终使用
time.asctime
-这只是默认的日期时间格式,当您不将自己的日期时间格式传递给
logging.Formatter
(
second argument in the formatter constructor
)