2016-10-22 3 views
1

저는 파이썬으로 임베디드 소프트웨어 코드에 대한 단위 테스트를하고 있습니다.파이썬 단위 테스트에서 특정 파일의 존재를 조롱하는 방법은 무엇입니까?

파일 중 하나에 특정 파일이 존재해야합니다. (예 : "/dir_name/file_name.txt") 그렇지 않으면 오류가 발생합니다.

일반적으로이 파일은 하드웨어 장치에 존재하며 파이썬 코드는이 파일을 읽습니다. 파이썬 코드에 대한 단위 테스트를 작성할 때 어떻게 파일의 존재를 조롱 할 수 있습니까?

tempfile.mkstemp() 정확히 원하는 경로/파일 이름을 생성하지 못했습니다. 즉, /dir_name/file_name.txt입니다. 항상 임의의 문자를 추가합니다.

이것은 Python3.4와 동일합니다. unittest.mock으로이 작업을 수행 할 수 있습니까?

+0

실재로이 벌금이 필요합니까? 또는 당신이 그것을 조롱 할 수있는 방법을 묻고 있습니까? 테스트하고있는 것이 무엇이든 그것이 존재한다고 생각합니까? 코드 샘플과 테스트 대상을 제공 할 수 있습니까? 나는 생각을 가지고 있다고 생각하지만 현재의 접근 방식을보고 싶습니다. – idjaw

+0

아니요, 존재하지 않아도됩니다. 파일이 존재한다는 사실을 코드를 만들 수만 있다면, 괜찮습니다. – sh0731

+0

우수. 솔루션을 제공하는 방법을 알 수있는 코드를 보여줄 수 있습니까? 여기에는 여러 가지 옵션이 있지만 더 적합한 솔루션을 제공하는 방법을 알고 자하는 것이 현재의 접근 방법입니다. – idjaw

답변

0

파일을 만들고 삭제하는 컨텍스트 관리자를 만들 수 있습니다.

from contextlib import contextmanager 

@contextmanager 
def mock_file(filepath, content=''): 
    with open(filepath, 'w') as f: 
     f.write(content) 
    yield filepath 
    try: 
     os.remove(filepath) 
    except Exception: 
     pass 


def test_function(): 
    with mock_file(r'/dirname/filename.txt'): 
     function() 
관련 문제