모의 메소드를 사용하여 테스트하고 싶은 인스턴스 메소드가 있습니다. 이 인스턴스 클래스의 메서드 중 하나를 인수를 사용하는 다른 메서드로 대체하려고합니다.파이썬에서 인자를 가진 재사용 가능한 다른 메소드로 메소드 조롱
클래스는 테스트 할 수 있습니다 :
class ClassToTest():
def compute(self):
result = self._get_xml()
return result
def _get_xml(self):
#get xml here
return xml
테스트 파일 : 이제
from mock import patch
class ClassTest():
@patch('classToTest._get_xml', _get_fake_xml)
def computetest(self):
test = ClassToTest()
toassert = test.compute()
#assert whatever
#self.assert(...)
def _get_fake_xml(self, objects, filename):
py_file = os.path.abspath(__file__)
py_dir = os.path.dirname(py_file)
xml_file = os.path.join(py_dir, filename)
xml_tree = objectify.parse(xml_file)
return xml_tree.getroot()
return xml
어떻게
내가 시도 패치에 _get_fake_xml 메서드에 대한 인수를 추가 할 수 있습니다
@patch('classToTest._get_xml', _get_fake_xml(mock.Mock(), 'filenam.xml'))
하지만 그건 효과가 없습니다. 그럼 전역 변수로 파일 이름을 만들려고했지만 다음 오류가 발생합니다 :
self.filename ClassToTest 인스턴스에 존재하지 않습니다.
기본적으로 다른 파일 이름과 함께 _get_fake_xml을 재사용 할 수 있기를 원합니다.
의견이 있으십니까?
클로저는 무엇입니까? – momigi
@AndyR 함수와 쌍을 이루는 범위입니다. Wikipedia에 대한 자세한 내용 : http://en.wikipedia.org/wiki/Closure_(computer_science). 첫 번째 예제는 위에 사용 된 것과 비슷한 파이썬 하나입니다. – dokkaebi
고마워, 그래도 고쳐주지 않았다. – momigi