1
제 제목은 매우 설명 적이지만 여기에 나와 있습니다. 이 설정이 있다고 가정합니다.파이썬 테스트 케이스에서 기본 클래스 비헤이비어를 조롱해야합니다.
class BaseClass(object):
def __init__(self):
pass
def base_function(self, param="Hello World"):
print param
#multiple inheritance probably irrelevant but my problem deals with it
class DerivedClass(BaseClass, AnotherBaseClass):
def __init__(self):
pass
def advanced_function(self):
#blah blah blah
#code code code
self.base_function()
이제 파생 클래스를 테스트하는 상황이 있습니다. 그렇지만 그렇게 할 때 기본 클래스 메서드가 호출되도록해야합니다. 나는
AttributeError: 'super' object has no attribute 'base_function'
내가 슈퍼 뭔가 잘못하고 있어요 알고 있기 때문에, 사람이 생각이 나는이 설정이 잘못 100 % 확신이
from mock import MagicMock
d = DerivedClass()
super(DerivedClass, d).base_function = MagicMock()
d.advanced_function()
super(DerivedClass, d).base_function.assert_called()
같은 일을 시도?
'super'가 아닌'BaseClass.base_function'에 직접 접근 해 보셨습니까? – jonrsharpe
이것은 작동합니다. 왜? 클래스의 특정 인스턴스를 사용해야한다고 생각했습니다. BaseClass.base_function을 MagicMock과 동일하게 설정하면 파생 된 모든 인스턴스가 조롱을 당하게됩니다. 이 모든 것을 설명하는 링크가 있다면 많은 도움이됩니다. – Zack