直接调 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






暂无评论内容