Проще всего начать с примера ...
Пример кода для тестирования:
type1_instance1 = f1()
type1_instance2 = f2()
compareResult = type1_instance1 < type1_intstance2
if compareResult:
print(type1_instance1.generate_value())
Экземпляры 1 и 2 являются экземплярами некоторого пользовательского класса.
В тесте f1
и f2
насмехаются над возвращением MagicMocks.Таким образом, для этих возвращаемых значений можно вызывать методы пользовательского класса.
При выполнении кода сравнения появляется ошибка
'<', которая не поддерживается между экземплярами MagicMock.'и' MagicMock '</p>
Как лучше всего включить MagicMocks для работы с перегруженными операторами?
Вот мое решение:
def __lt__(self, other):
return mock.MagicMock
compareable_MagicMock_Instance = MagicMock()
setattr(compareable_MagicMock_Instance, '__lt__', __lt__)
f1.return_value = compareable_MagicMock_Instance
f2.return_value = another_compareable_MagicMock_Instance