python data_error ai_generated true

断言错误:期望mock调用顺序为[call(1), call(2)],实际为[call(2), call(1)]

AssertionError: Expected mock_calls to have been called in order. Actual calls: [call(1), call(2)]

ID: python/unittest-mock-call-order

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

版本兼容性

版本状态引入弃用备注
3.9 active

根因分析

mock调用顺序与预期不一致,导致断言失败。

English

测试中检查了mock的调用顺序,但实际调用顺序与期望不符。

generic

解决方案

  1. 90% 成功率
    mock.assert_has_calls([call(1), call(2)], any_order=False)
  2. 85% 成功率
    calls = []
    def side_effect(x):
        calls.append(x)
        return x
    mock.side_effect = side_effect
    assert calls == [1, 2]

无效尝试

常见但无效的做法:

  1. 60% 失败

    可能掩盖并发或逻辑错误。

  2. 70% 失败

    不检查顺序,无法满足测试意图。