Возможно ли идентифицировать родительский экземпляр макетного объекта экземпляра дочернего макета или дочерний экземпляр родительского макета? Например, если у меня есть следующий кодНайти родительский макет объекта для ребенка, дочерние макеты объектов родителя
>>> from unittest.mock import MagicMock
>>> parent_mock = MagicMock()
>>> child_mock1 = parent_mock(a=1)
>>> child_mock2 = parent_mock(b='spam')
Как я мог подтвердить позже, что ребенок издевается порожден от вызова parent_mock
? Как я могу проверить, какие макетные объекты parent_mock
?
Кроме того, как я мог различить, что child_mock1
возникла именно из вызова parent_mock(a=1)
, в то время как child_mock2
происходит от вызова parent_mock(b='spam')
?
Я понимаю, что это может быть manually attach mocks as attributes of other mocks, однако для этого требуется много настроек, так что вам нужно будет явно определить обратные вызовы родительского макета, чтобы он возвращал назначенные дочерние mocks, и поэтому он не делает 't масштабируется задолго до нескольких звонков.
Возможно, вы вообще не хотите делать что-то подобное. Это не pythonic, чтобы беспокоиться о иерархиях наследования. Почему вы хотите знать эти вещи? Вероятно, есть другой способ решить вашу актуальную проблему. – erikbwork
@ erikb85 Слова «родитель» и «ребенок» не означают «суперкласс» и «подкласс». Экземпляры 'Mock', когда вызывается, возвращают« дочерние »экземпляры' Mock' (по умолчанию); экземпляр 'Mock', который создал другой, называется« родителем ». – gotgenes
Что не отвечает на вопрос.:) – erikbwork