python config_error ai_generated true

Failed: Fixture "frozen_time" 被直接调用。请改用 "freezer"。

Failed: Fixture "frozen_time" called directly. Use "freezer" instead.

ID: python/pytest-freeze-time-fixture-conflict

其他格式: JSON · Markdown 中文 · English
80%修复率
85%置信度
0证据数
2025-04-11首次发现

版本兼容性

版本状态引入弃用备注
0.3 active — — —
0.9 active — — —

根因分析

pytest-freezegun/freezegun-time 插件将 `frozen_time` 作为底层辅助对象暴露;测试必须请求 `freezer`(fixture),由它管理冻结/解冻生命周期。

English

pytest-freezegun/freezegun-time plugin exposes `frozen_time` as a low-level helper; tests must request `freezer` (the fixture) which manages freeze/thaw lifecycle.

generic

解决方案

  1. 95% 成功率
    Request the freezer fixture:
    
    def test_expiry(freezer):
        freezer.move_to('2024-01-01')
        assert is_expired()
  2. 92% 成功率
    Or use the decorator form:
    
    from freezegun import freeze_time
    
    @freeze_time('2024-01-01')
    def test_expiry(): ...

无效尝试

常见但无效的做法:

  1. 90% 失败

    The plugin detects direct access and raises the same failure.

  2. 80% 失败

    Bypasses the fixture and leaves time frozen across other tests, causing cascading failures.