python3unittest:如何使用运算符与MagicMocks进行比较

2024-09-28 20:57:32 发布

您现在位置:Python中文网/ 问答频道 /正文

最简单的事情就是从一个例子开始。。。在

要测试的示例代码:

type1_instance1 = f1()
type1_instance2 = f2()

compareResult = type1_instance1 < type1_intstance2

if compareResult:
    print(type1_instance1.generate_value())

实例1和实例2是某些自定义类的实例。在

在测试时,f1和{}被模拟为返回magicmock。以便可以对这些返回值调用自定义类的方法。在

当比较代码被执行时,我得到了错误

'<' not supported between instances of 'MagicMock' and 'MagicMock'

让MagicMocks与重载运算符一起工作的最佳方法是什么?在

我的解决方案是:

^{pr2}$

Tags: 实例方法代码示例if事情例子f2
1条回答
网友
1楼 · 发布于 2024-09-28 20:57:32

您应该重写MagicMock对象的__lt__属性的return_value属性,并使用patch来生成f1和{}返回自定义的MagicMock实例:

from unittest.mock import patch, MagicMock
def f1():
    pass
def f2():
    pass
compareable_MagicMock_Instance = MagicMock()
compareable_MagicMock_Instance.__lt__.return_value = True
with patch('__main__.f1', return_value=compareable_MagicMock_Instance), patch('__main__.f2', return_value=compareable_MagicMock_Instance):
    type1_instance1 = f1()
    type1_instance2 = f2()
    compareResult = type1_instance1 < type1_instance2
    if compareResult:
        print('type1_instance1 is less than type1_instance2')

该输出:

^{pr2}$

相关问题 更多 >