[Python] 파이썬 단위테스트 Mock 파일 사용하기
- 파이썬(Python)
- 2022. 3. 13. 17:17
참조
소개
안녕하세요. 오늘은 파이썬 Unittest (단위테스트) 에 대해서 공부해 보려고 합니다.
그 중에서도, Mock 데이터 즉 가짜 데이터를 이용한 단위 테스트를 진행하는 방법에 대해서 알려 드리려고 합니다.
Mocking을 이용하면 실제 파일 혹은 데이터가 존재하지 않아도, 가짜로 만들기 때문에 제약사항 없이 단위 테스트를 진행할 수 있다는 장점이 있습니다.
git에 좋은 내용이 있어 해당 내용을 토대로 파이썬에서 Mock 데이터를 이용한 단위테스트를 발견 하였고, 같은 방식으로 테스트 진행 하였습니다.
예제 코드
FileReader.py
- 다음과 같이 FileReader.py 파이썬 파일 안에 static 메서드로
count_lines
라는 메서드를 만들었습니다. - 해당 메서드의 역할은 파일 안의 텍스트 라인을 읽어 들여 총 라인 수를 구하는 메서드 입니다.
class FileReader:
@staticmethod
def count_lines(file_path):
with open(file_path, 'r') as _file:
file_content_list = _file.readlines()
print(file_content_list)
return len(file_content_list)
FileReader_test.py
- 위에서 FileReader.py 파이썬 파일을 생성하였고, count_lines 메서드도 작성하였습니다.
- 실제로 해당 메서드가 정상적으로 동작하는지에 대한 단위 테스트 코드를 작성하겠습니다.
- 이때 mock 파일을 생성하여 내용까지 작성하는 코드도 있으니 참고하시면 되겠습니다.
import unittest
from unittest.mock import patch, mock_open
from lib.FileReader import FileReader
class TestReadFiles(unittest.TestCase):
def test_count_lines(self):
file_content_mock = """안녕하세요.
파일 테스트 진행합니다.
현재 Mocking 파일 테스트 진행 중입니다.
만나서 반갑습니다."""
fake_file_path = 'file/path/mock'
with patch('lib.FileReader.open'.format(__name__),
new=mock_open(read_data=file_content_mock)) as _file:
actual = FileReader().count_lines(fake_file_path)
_file.assert_called_once_with(fake_file_path, 'r')
expected = len(file_content_mock.split('\n'))
self.assertEqual(expected, actual)
if __name__ == '__main__':
unittest.main()
728x90
'파이썬(Python)' 카테고리의 다른 글
[Python] 리스트 컴프리헨션 (0) | 2022.04.03 |
---|---|
[Python] 파이썬 설치경로 확인하기 (0) | 2022.03.18 |
[Python] 파이썬 Callback 구현 (0) | 2022.03.04 |
[Python] Visual Studio Code 에서 Python 단위테스트 사용하기 (0) | 2022.03.01 |
[Python] NumPy 배열 연산 (0) | 2022.02.18 |
이 글을 공유하기