파일 입력, 열기 및 처리를 수행하고 일부 데이터를 출력하는 데 사용하는 코드가 있습니다. 나는 기능을 작동 시켰고 지금은 단위 테스트를하고있다. 아래는 코드 예제이다.Python에서 디렉토리 구조 조롱
def foo(dir):
path_to_search = join(dir, "/baz/foo")
if isdir(path_to_search):
#path exists so do stuff...
for fname in listdir(path_to_search):
do_stuff()
else:
print "path doesn't exist"
내가 과거가 충분히 쉽게 존재하지 않는 테스트를 만들 수 있었다,하지만 난 디렉토리 구조의 "/ 바즈/foo는"부분이 존재한다는 주장의 위 당신이 볼 수 있듯이했습니다 (에 프로덕션은 디렉토리 구조가이 파일을 가져야 만하는 경우도 있고 처리하지 않아도됩니다.
TempDir을 사용하여 임시 디렉토리 구조를 만들고 결합하려고 시도했지만 코드는 항상 그 길은 존재하지 않는다는 말을 시작합니다.
os.listdir의 출력을 조롱하여 필요한/baz/foo 규칙을 따르는 임시 디렉토리 구조를 만들 필요가 없습니까?
와 ['mocker.replace()'] (HTTP가 : //labix.org/mocker#CA-a25a2c16ecea818439349b5f0b23eda994ab34bf_010). –
@LukasGraf : stdlib'unittest.mock' 또는 백 포트 인'mock'을 사용하는 것이 더 좋습니다. –
@MartijnPieters 나는 개인적으로 Labix Mocker를 선호한다. [패치 할 곳] (http://www.voidspace.org.uk/python/mock/patch.html#where-to-patch)을 참조하십시오. Labix mocker는 실제로 패치를 적용한 객체에 대한 참조를 수집하고 패치 및 리셋 한 객체를 참조하여 작업을 처리합니다. –