Python
가상파일시스템 pyfakefs 를 통해 테스트 코드 작성하기
r잡초처럼
2023. 4. 24. 22:12
해당 디렉토리의 파일을 모아주는 util 함수를 생성하고 테스트 하고 싶었다. 하지만 실제로 폴더를 만들고 파일을 만드는 건 이치에 맞지 않다고 판단해서 이를 해주는 라이브러리가 없을까 찾아보다가 pyfakefs 를 찾았다.
공식문서는 요기
pyfakefs
pyfakefs implements a fake file system that mocks the Python file system modules.
pypi.org
사용 방법은 간단했다. 해당 라이브러리를 다운받고, pytest 의 fixture를 다루듯이 테스트 함수에서 매개변수로 다루면 되었다.
아래는 pyfakefs 를 활용해 테스트 코드를 짜본 것이다.
def test_collect_file_path(fs) -> None:
"""
해당 디렉토리의 파일들을 모으는 collect_file_path 를 테스트 하는 함수
"""
from pathlib import Path
tmp_path = "tmp/test"
files = ["text1.xlsx", "test2.csv"]
for file in files:
fs.create_file(f"{tmp_path}/{file}")
assert collect_file_path(tmp_path) == [Path(f"{tmp_path}/{file}") for file in files]