선택된 테스트 실행 및 테스트 디스커버리 사용
Python 의 unittest 모듈은 코드를 효과적으로 테스트할 수 있는 강력한 도구입니다. 특정 테스트를 실행하거나 프로젝트의 모든 테스트를 자동으로 검색하고 실행하는 여러 가지 방법을 제공합니다. 이는 테스트 중에 코드의 특정 부분에 집중하거나 전체 프로젝트의 테스트 스위트를 빠르게 확인할 수 있으므로 매우 유용합니다.
특정 테스트 실행하기
경우에 따라 전체 테스트 스위트 대신 특정 테스트 메서드 또는 테스트 클래스만 실행하려는 경우가 있을 수 있습니다. unittest 모듈과 함께 패턴 옵션을 사용하여 이를 수행할 수 있습니다. 이렇게 하면 실행할 테스트를 더 많이 제어할 수 있으며, 코드의 특정 부분을 디버깅할 때 유용할 수 있습니다.
Stock 객체 생성과 관련된 테스트만 실행하려면 다음을 수행합니다.
python3 -m unittest teststock.TestStock.test_create
이 명령에서 python3 -m unittest는 Python 에게 unittest 모듈을 실행하도록 지시합니다. teststock은 테스트 파일의 이름이고, TestStock은 테스트 클래스의 이름이며, test_create는 실행하려는 특정 테스트 메서드입니다. 이 명령을 실행하면 Stock 객체 생성과 관련된 코드가 예상대로 작동하는지 빠르게 확인할 수 있습니다.
TestStock 클래스의 모든 테스트를 실행하려면 다음을 수행합니다.
python3 -m unittest teststock.TestStock
여기서는 특정 테스트 메서드 이름을 생략합니다. 따라서 이 명령은 teststock 파일의 TestStock 클래스 내의 모든 테스트 메서드를 실행합니다. 이는 Stock 객체의 테스트 케이스의 전반적인 기능을 확인하려는 경우에 유용합니다.
테스트 디스커버리 사용하기
unittest 모듈은 프로젝트의 모든 테스트 파일을 자동으로 검색하고 실행할 수 있습니다. 이렇게 하면 특히 테스트 파일이 많은 대규모 프로젝트에서 각 테스트 파일을 수동으로 지정하여 실행하는 번거로움을 덜 수 있습니다.
- 현재 파일의 이름을 테스트 디스커버리 명명 패턴에 따라 변경합니다.
mv teststock.py test_stock.py
unittest의 테스트 디스커버리 메커니즘은 test_*.py 명명 패턴을 따르는 파일을 찾습니다. 파일 이름을 test_stock.py로 변경하면 unittest 모듈이 이 파일의 테스트를 더 쉽게 찾고 실행할 수 있습니다.
- 테스트 디스커버리를 실행합니다.
python3 -m unittest discover
이 명령은 unittest 모듈에게 현재 디렉토리에서 test_*.py 패턴과 일치하는 모든 테스트 파일을 자동으로 검색하고 실행하도록 지시합니다. 디렉토리를 검색하고 일치하는 파일에서 발견된 모든 테스트 케이스를 실행합니다.
- 테스트를 검색할 디렉토리를 지정할 수도 있습니다.
python3 -m unittest discover -s . -p "test_*.py"
여기서:
-s .은 검색을 시작할 디렉토리를 지정합니다 (이 경우 현재 디렉토리). 점 (.) 은 현재 디렉토리를 나타냅니다. 다른 위치에서 테스트를 검색하려면 이 값을 다른 디렉토리 경로로 변경할 수 있습니다.
-p "test_*.py"는 테스트 파일과 일치하는 패턴입니다. 이렇게 하면 test_로 시작하고 .py 확장자를 가진 파일만 테스트 파일로 간주됩니다.
이전과 마찬가지로 12 개의 모든 테스트가 실행되고 통과하는 것을 볼 수 있습니다.
- 랩과의 일관성을 위해 파일 이름을 원래 이름으로 다시 변경합니다.
mv test_stock.py teststock.py
테스트 디스커버리를 실행한 후 랩 환경을 일관되게 유지하기 위해 파일 이름을 원래 이름으로 다시 변경합니다.
테스트 디스커버리를 사용하면 각 테스트 파일을 개별적으로 지정할 필요 없이 프로젝트의 모든 테스트를 쉽게 실행할 수 있습니다. 이렇게 하면 테스트 프로세스가 더 효율적이고 오류 발생 가능성이 줄어듭니다.