单元测试依赖当前时间,怎么让它稳定可重复

直接调 datetime.now() 的代码没法稳定测试。做法是把它包一层,注入 Clock 或 now() 函数,测试时传固定时间——Python 用 freezegun 的 freeze_time、Java 用 Clock.fixed()、JS 用 vi.setSystemTime 都能冻结时间。另外断言里别用「今天」这类相对值,用固定基准日期,否则跨零点或换时区跑会随机失败。

from freezegun import freeze_time

@freeze_time("2026-01-01 09:00:00")
def test_report_period():
    assert build_report().date == date(2026, 1, 1)
THE END
喜欢就支持一下吧
点赞13 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容