Я пытаюсь переделать перечисление в Python, чтобы я мог утверждать, вызывает ли метод класса проверенный метод на перечислении.Mocking Enum с помощью unittest.mock не работает должным образом
Это не работает должным образом. Этот метод никогда не вызывается, потому что сравнение идентичности макета с фактическим перечислением всегда терпит неудачу.
class ProcessorTest(unittest.TestCase):
def test_do_something(self):
# Mock library does not work with enums..
self.mock_camera = mock.create_autospec(Camera.exit)
self.processor.process(self.mock_camera)
# => always leads to "failed"
self.assertTrue(self.mock_camera.do_something.called,
"Failed")
class Camera(Enum):
entrance = 1
exit = 2
def do_something(self):
return True
class Processor:
def process(self, camera):
# this comparison always resolves to false
if camera is Camera.exit:
# never reached
camera.do_something()
Вы пробовали исправить этот метод вместо того, чтобы заменить весь член перечислителя? Нельзя издеваться над личностью. – jonrsharpe
@jonrsharpe спасибо, что сработало. Вид нового с тестированием на Python, но вы не можете издеваться над личностью. Это сработало: 'Camera.exit.do_something = mock.MagicMock()' и 'self.assertTrue (Camera.exit.do_something.called,« failed »)' – edwardmp