반응형
테스트코드를 짜임새있게 작성했을 때 이점이 많이 있다. 특정 코드를 수정했을 때 문제가 될 수 있는 부분을 빠르게 확인할 수 있기 때문에 리팩토링이 원활하게 이루어진다.
pytest를 활용해서 테스팅을 진행할 때, 파일을 수정하고나서 저장한 뒤 직접 테스트 파일을 실행하는 것이 귀찮았다. 디렉토리 내 파일이 변경되는 것을 추적하고 자동으로 특정 명령어를 실행할 수 있도록 쉘 스크립트를 작성했다.
TDD (Test Driven Development)
테스트 주도 개발은 매우 짧은 개발 사이클을 반복하는 소프트웨어 개발 프로세스 중 하나이다. 개발자는 먼저 요구사항을 검증하는 자동화된 테스트 케이스를 작성한다. 그런 후에, 그 테스트 케이스를 통과하기 위한 최소한의 코드를 생성한다. 마지막으로 작성한 코드를 표준에 맞도록 리팩토링한다. - 위키백과
순서
1. fc.sh
2. ignore
3. 참고자료
1. fc.sh
- MacOS의 zsh을 사용하여 테스트하였다.
- 실행명령어
> bash fc.sh
FOLDERLIST=$(python3 check_ignore.py)
LEDIT=$(stat -f %Z $FOLDERLIST)
while true
do
FOLDERLIST=$(python3 check_ignore.py)
CEDIT=$(stat -f %Z $FOLDERLIST)
if [[ "$CEDIT" != "$LEDIT" ]]; then
echo "===== RUN PYTHON COMMAND ====="
python3 test.py
LEDIT=$CEDIT
fi
sleep 0.5
done
- FOLDERLIST에 변경을 추적할 파일목록을 담는다.
- LEDIT은 해당 파일들의 마지막 수정일시를 체크하여 가지고있는다.
- CEDIT에 현재 파일들의 수정일시를 저장하여 LEDIT과 비교
- LEDIT과 CEDIT이 같지 않을경우는 파일이 변경되었을 때 뿐이니 echo 부터 LEDIT을 최신화하는 부분까지 실행
2. ignore
기본적으로 폴더 내 모든 파일을 추적하는데, gitignore처럼 venv폴더와 같은것은 변경을 추적하지 않기 위해서 check_ignore.py와 .ignore 두 파일을 생성해놓았다.
- .ignore
- 제외할 파일, 폴더 패턴 정의 ( * 사용 가능)
- 폴더는 끝에 '/', '/*'로 끝나는 경우
- default는 파일 패턴
- check_ignore.py
- 먼저 .ignore파일을 읽어 패턴을 확인한다. (파일 패턴, 폴더 패턴 구분)
- 디렉토리 내 파일들 목록에서 폴더를 먼저 제외
- 남아있는 파일 중 파일 패턴과 일치하면 제외
- 남아있는것을 print하여 fc.sh에서 FOLDERLIST 변수에 담는다.
./test.py ./check_ignore.py ...
- 먼저 .ignore파일을 읽어 패턴을 확인한다. (파일 패턴, 폴더 패턴 구분)
3. 참고자료
반응형
'슬기로운 개발자생활 > DevOps' 카테고리의 다른 글
Prettier VSCODE에서 사용하기 (0) | 2024.01.05 |
---|---|
코딩 스타일 가이드 (0) | 2024.01.05 |
Linux기반 OS (Ubuntu) 터미널 명령어 정리 (0) | 2024.01.05 |