Я бы ожидал bool(MagicMock(x)) == bool(x)
для любого типа, который не делает смешных вещей с __bool__
.Тем не менее, я получаю неожиданное поведение с typing.NamedTuple
from unittest.mock import MagicMock
from typing import NamedTuple
class A:
pass
# these work as I'd expect
bool(A) # True
bool(A()) # True
bool(MagicMock(A)) # True
B = NamedTuple('B', [('b', int)])
bool(B) # True
bool(B(b=1)) # True
bool(MagicMock(B)) # False ?!!!
Кто-нибудь знает, почему NamedTuple
и MagicMock
взаимодействуют так?