내 생각에 가장 좋은 해결책은 unittest
명령 줄 인터페이스 를 사용하여 디렉토리를 추가 sys.path
할 필요가 없으므로 TestLoader
클래스 에서 수행하지 않아도됩니다 .
예를 들어 다음과 같은 디렉토리 구조
new_project
├── antigravity.py
└── test_antigravity.py
당신은 그냥 실행할 수 있습니다 :
$ cd new_project
$ python -m unittest test_antigravity
귀하와 같은 디렉토리 구조의 경우 :
new_project
├── antigravity
│ ├── __init__.py # make it a package
│ └── antigravity.py
└── test
├── __init__.py # also make test a package
└── test_antigravity.py
test
패키지 내부의 테스트 모듈에서 antigravity
평소와 같이 패키지 및 해당 모듈을 가져올 수 있습니다 .
# import the package
import antigravity
# import the antigravity module
from antigravity import antigravity
# or an object inside the antigravity module
from antigravity.antigravity import my_object
단일 테스트 모듈 실행
이 경우 단일 테스트 모듈을 실행하려면 다음을 수행하십시오 test_antigravity.py
.
$ cd new_project
$ python -m unittest test.test_antigravity
테스트 모듈을 가져 오는 것과 같은 방식으로 참조하십시오.
단일 테스트 사례 또는 테스트 방법 실행
또한 단일 TestCase
또는 단일 테스트 방법을 실행할 수 있습니다 .
$ python -m unittest test.test_antigravity.GravityTestCase
$ python -m unittest test.test_antigravity.GravityTestCase.test_method
모든 테스트 실행
테스트 검색 을 사용하여 모든 테스트를 검색하고 실행할 수 있습니다. 모듈이나 패키지라는 이름이어야합니다 test*.py
( -p, --pattern
플래그 로 변경할 수 있음 ).
$ cd new_project
$ python -m unittest discover
$ # Also works without discover for Python 3
$ # as suggested by @Burrito in the comments
$ python -m unittest
패키지 test*.py
내부의 모든 모듈 이 실행 test
됩니다.