# AssertionError: assert datetime.datetime(2025, 1, 1, 0, 0) == datetime.datetime(2024, 6, 1, 12, 0)（冻结时间不一致）

- **ID:** `python/pytest-freeze-time-inconsistent`
- **领域:** python
- **类别:** runtime_error
- **验证级别:** ai_generated
- **修复率:** 80%

## 根因

freezegun 的 freeze_time 未修补 C 扩展中的 datetime，或代码使用 time.monotonic / time.time_ns，而 freezegun 默认不覆盖这些。

## 版本兼容性

| 版本 | 状态 | 引入 | 弃用 |
|------|------|------|------|
| 1.4.x | active | — | — |
| 1.5.x | active | — | — |

## 解决方案

1. **** (85% 成功率)
   ```
   import time
from freezegun import freeze_time

def test_x(monkeypatch):
    with freeze_time('2025-01-01'):
        monkeypatch.setattr(time, 'monotonic', lambda: 0.0)
        assert run() == expected
   ```
2. **** (92% 成功率)
   ```
   class Clock:
    def now(self): return datetime.now(timezone.utc)

def test_x():
    c = Clock()
    with freeze_time('2025-01-01'):
        assert c.now().year == 2025
   ```

## 无效尝试

- **** — tick advances time by real elapsed seconds but doesn't patch C-level time functions; the mismatch persists. (70% 失败率)
- **** — Module-level freeze doesn't reach C extensions or subprocesses; portions still read the real clock. (65% 失败率)
