如何在logb上使用冷冻枪

2024-09-30 06:29:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试运行包含在日志中模拟datetime的测试(对于logbook.TimedRotatingFileHandler的逻辑)。但冰枪还没到航海日志。日志打印为当前(未模拟,正确)当前时间!你知道吗

我的例子显示了令人困惑的信息

[2019-07-09 22:01:21.583288] INFO: None: test time: 2000-01-01 00:01:00

对于以下测试

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

Tags: testimportlogdatetimetimesysdtassert
1条回答
网友
1楼 · 发布于 2024-09-30 06:29:39

您在导入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'

相关问题 更多 >

    热门问题