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
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.
解决方案
-
95% 成功率
Request the freezer fixture: def test_expiry(freezer): freezer.move_to('2024-01-01') assert is_expired() -
92% 成功率
Or use the decorator form: from freezegun import freeze_time @freeze_time('2024-01-01') def test_expiry(): ...
无效尝试
常见但无效的做法:
-
90% 失败
The plugin detects direct access and raises the same failure.
-
80% 失败
Bypasses the fixture and leaves time frozen across other tests, causing cascading failures.