如何在日志上使用 freezegun
how to use freezegun on logbook
我正在尝试 运行 测试,这些测试涉及在日志中模拟日期时间(针对 logbook.TimedRotatingFileHandler
的逻辑)。但是 freezegun 没有到达日志。日志打印为当前(未模拟,正确)当前时间!
我的示例打印了令人困惑的消息
[2019-07-09 22:01:21.583288] INFO: None: test time: 2000-01-01 00:01:00
对于下面的pytest
from freezegun import freeze_time
import logbook
import sys
import datetime as dt
def test_logbook():
faketime = freeze_time('2000-01-01 00:01')
faketime.start()
assert dt.datetime.now().strftime('%Y%d%m') == '20000101'
log = logbook.Logger()
log.handlers.append(logbook.StreamHandler(sys.stdout))
log.info('test time: ' + str(dt.datetime.now()))
faketime.stop()
assert 0
您在导入 logbook
后冻结时间,没有覆盖模块级别的一些初始化。在时间冻结的情况下将导入移动到范围内;示例:
from freezegun import freeze_time
import sys
import datetime as dt
def test_logbook(capsys):
with freeze_time('2000-01-01 00:01'):
import logbook
assert dt.datetime.now().strftime('%Y%d%m') == '20000101'
log = logbook.Logger()
log.handlers.append(logbook.StreamHandler(sys.stdout))
log.info('hello world')
assert capsys.readouterr().out == '[2000-01-01 00:01:00.000000] INFO: None: hello world\n'
我正在尝试 运行 测试,这些测试涉及在日志中模拟日期时间(针对 logbook.TimedRotatingFileHandler
的逻辑)。但是 freezegun 没有到达日志。日志打印为当前(未模拟,正确)当前时间!
我的示例打印了令人困惑的消息
[2019-07-09 22:01:21.583288] INFO: None: test time: 2000-01-01 00:01:00
对于下面的pytest
from freezegun import freeze_time
import logbook
import sys
import datetime as dt
def test_logbook():
faketime = freeze_time('2000-01-01 00:01')
faketime.start()
assert dt.datetime.now().strftime('%Y%d%m') == '20000101'
log = logbook.Logger()
log.handlers.append(logbook.StreamHandler(sys.stdout))
log.info('test time: ' + str(dt.datetime.now()))
faketime.stop()
assert 0
您在导入 logbook
后冻结时间,没有覆盖模块级别的一些初始化。在时间冻结的情况下将导入移动到范围内;示例:
from freezegun import freeze_time
import sys
import datetime as dt
def test_logbook(capsys):
with freeze_time('2000-01-01 00:01'):
import logbook
assert dt.datetime.now().strftime('%Y%d%m') == '20000101'
log = logbook.Logger()
log.handlers.append(logbook.StreamHandler(sys.stdout))
log.info('hello world')
assert capsys.readouterr().out == '[2000-01-01 00:01:00.000000] INFO: None: hello world\n'