首页 > 解决方案 > `MagicMock` 可以与 python3 中的 int 进行比较吗?

问题描述

我正在迁移我的项目的 python 版本 (2->3)。测试适用于 python2,但抱怨 python3,错误就像

TypeError: '>' not supported between instances of 'MagicMock' and 'int'

这是一个最小的案例

# test_mock.py
try:
    from mock import MagicMock
except:
    from unittest.mock import MagicMock

def test_mock_func():
    a = MagicMock()
    b = a.value

    if b > 100:
        assert True
    else:
        assert True 

赶紧跑py.test .

这些技巧不起作用

MagicMock.__le__ = some_le_method # just not working

MagicMock.__le__.__func__.__code = some_le_method.__func__.__code__ # wrapper_descriptor does not have attribute __func__

标签: pythonpython-3.xpython-2.7

解决方案


您应该分配__gt__内部ba.value

# self is MagicMock itself
b.__gt__ = lambda self, compare: True
# or
a.value.__gt__ = lambda self, compare: True

推荐阅读