有没有一种简单的方法可以根据两个unittest.mock.Mock
实例的非特殊属性检查它们是否相等Mock
不提供__eq__
实现(而且MagicMock
AFAIK也不提供),因此Mock(a=1) == Mock(a=1)
的计算结果为False
我正在寻找一种同样适用于嵌套mock的解决方案,例如Mock(a=Mock(x=1), b=2)
我曾尝试使用dir
列出mock的属性,但其中也包含一些特殊属性,如method_calls
,我希望忽略这些属性。我也不喜欢硬编码和删除特殊属性
准确地说,我希望下面返回True
:
m1 = Mock(a=1, b=Mock(c=2))
m2 = Mock(a=1, b=Mock(c=2))
m1.some_method()
compare_mocks(m1, m2)
鉴于以下内容应返回False
(不同的.b.c
值):
compare_mocks(Mock(a=1, b=Mock(c=2)), Mock(a=1, b=Mock(c=3))
除了暴力检查属性,我想不出任何东西
这应该满足您对简单用例的要求。 在一个模拟实际引用另一个的情况下,这可能会进入无限递归
相关问题 更多 >
编程相关推荐