python3中的'MagicMock'能与int比较吗?
我正在迁移项目的python版本(2->3)。对于python2,测试工作正常,但是对于python3,会出现如下错误python3中的'MagicMock'能与int比较吗?,python,python-3.x,python-2.7,Python,Python 3.x,Python 2.7,我正在迁移项目的python版本(2->3)。对于python2,测试工作正常,但是对于python3,会出现如下错误 TypeError: '>' not supported between instances of 'MagicMock' and 'int' 这是一个很小的例子 #test_mock.py 尝试: 从模拟导入MagicMock 除: 从unittest.mock导入MagicMock def test_mock_func(): a=MagicMock() b=a.值
TypeError: '>' not supported between instances of 'MagicMock' and 'int'
这是一个很小的例子
#test_mock.py
尝试:
从模拟导入MagicMock
除:
从unittest.mock导入MagicMock
def test_mock_func():
a=MagicMock()
b=a.值
如果b>100:
断言正确
其他:
断言正确
只需运行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__
您应该在
b
或a.值中指定\uu gt\uuuu
# self is MagicMock itself
b.__gt__ = lambda self, compare: True
# or
a.value.__gt__ = lambda self, compare: True
如果这在Python2中起作用,那么比较是错误的,这使得测试也是错误的。Python2没有那么严格,比较结果有时令人惊讶。那么,实际测试的是什么呢?它是处理web请求的代码,响应有一个字段,应该是时间戳。为了避免网络通信,我发送了一个MagicMock
作为响应。如果将时间戳与另一个时间戳进行比较,则会发生错误。a.value
未定义,除非明确设置。你应该设置它(一个数字),然后比较就可以了。不,它不是未定义的。它是MagicMock