> 백엔드 개발 > 파이썬 튜토리얼 > Python의 별도 테스트 디렉터리에서 단위 테스트를 효율적으로 실행하는 방법은 무엇입니까?

Python의 별도 테스트 디렉터리에서 단위 테스트를 효율적으로 실행하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-11-27 03:04:13
원래의
818명이 탐색했습니다.

How to Efficiently Run Unit Tests from a Separate Test Directory in Python?

공통 테스트 디렉터리 구조에서 단위 테스트를 실행하는 방법

Python에서는 단위 테스트를 별도의 테스트 디렉터리에 구성하는 것이 일반적입니다. . 그러나 이로 인해 이러한 테스트를 어떻게 효율적으로 실행할 수 있는지에 대한 의문이 제기됩니다.

문제

테스트 디렉터리 내에서 python test_antigravity.py를 실행하려고 하면 모듈이 경로에 없기 때문에 반중력 모듈이 실패합니다. PYTHONPATH를 수정하거나 다른 검색 경로 트릭을 사용하는 것이 가능할 수 있지만 특히 단순히 테스트 결과를 확인하려는 사용자의 경우 단순성이 부족합니다.

해결책

권장되는 접근 방식은 unittest 명령줄 인터페이스를 활용하는 것입니다. TestLoader 클래스는 필요한 디렉토리를 sys.path에 추가하여 경로 문제를 해결합니다.

예를 들어 다음과 같은 디렉토리 구조에서:

new_project
├── antigravity.py
└── test_antigravity.py
로그인 후 복사

다음을 사용하여 테스트를 실행할 수 있습니다.

$ cd new_project
$ python -m unittest test_antigravity
로그인 후 복사

제공된 것과 같은 디렉토리 구조의 경우:

new_project
├── antigravity
│   ├── __init__.py
│   └── antigravity.py
└── test
    ├── __init__.py
    └── test_antigravity.py
로그인 후 복사

다음을 수행할 수 있습니다. __init__.py 파일이 포함된 패키지로 반중력 및 테스트를 모두 선언하여 비슷한 기능을 얻을 수 있습니다. 테스트 모듈에서는 평소와 같이 반중력 패키지와 해당 모듈을 가져올 수 있습니다.

특정 테스트 실행

test_antigravity.py와 같은 단일 테스트 모듈을 실행하려면 :

$ cd new_project
$ python -m unittest test.test_antigravity
로그인 후 복사

개별 테스트 사례를 실행하거나 방법:

$ 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
로그인 후 복사

단순함을 선호하는 사용자의 경우 다음을 실행하도록 지시할 수 있습니다. 명령:

To run the unit tests, do:
$ python -m unittest discover
로그인 후 복사

위 내용은 Python의 별도 테스트 디렉터리에서 단위 테스트를 효율적으로 실행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿