Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python3中的'MagicMock'能与int比较吗?_Python_Python 3.x_Python 2.7 - Fatal编程技术网

python3中的'MagicMock'能与int比较吗?

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.值

我正在迁移项目的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.值
如果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