Есть ли простой способ проверить два unittest.mock.Mock
экземпляра на равенство на основе их несвойственных атрибутов? Mock
не обеспечивает реализацию __eq__
(и не MagicMock
AFAIK), поэтому Mock(a=1) == Mock(a=1)
оценивается как False
.
Я ищу решение, которое также работает для вложенных mocks, то есть для таких вещей, как Mock(a=Mock(x=1), b=2)
.
Я пытался использовать dir
для перечисления атрибутов mocks, но он также содержит специальные атрибуты, такие как 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))