python - `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__
解决方案
您应该分配__gt__
内部b
或a.value
# self is MagicMock itself
b.__gt__ = lambda self, compare: True
# or
a.value.__gt__ = lambda self, compare: True
推荐阅读
- java - XPATH:将 xml 节点插入另一个 XML 文档
- python - 避免 NaN 值并在 python 中明智地添加两个矩阵元素
- c++ - 在堆栈上复制成员值或使用指针访问它?
- jquery - 如何通过jquery中的remove方法删除div
- android - 如何在 Play 商店中发布具有不同名称的应用程序?
- c# - 如何将DataTable拆分为多个数据表c#
- c++ - 为什么我不需要重载 = 运算符?
- php - 用于表名的 laravel mysql 列
- sharepoint - 内容类型字段+customXMLParts+ 文档自定义属性
- java - 区分 jpa DataIntegration 异常