pytest를 사용할 때 경로 문제로 인해 ImportError 예외가 발생하는 것이 일반적입니다. 이는 특히 다양한 운영 체제와 프로젝트 구조에서 널리 나타날 수 있습니다. 이 문제를 해결하고 잠재적인 솔루션을 살펴보겠습니다.
경로 문제를 해결하는 효과적인 방법 중 하나는 conftest.py 파일을 활용하는 것입니다. Pytest는 테스트 수집 중에 conftest 모듈을 검색하여 사용자 정의 후크 및 고정 장치를 수집합니다. 프로젝트의 루트 디렉터리(pytest를 실행하는 위치)에 빈 conftest.py 파일을 배치하면 pytest가 자동으로 상위 디렉터리를 sys.path에 추가하여 애플리케이션 모듈을 가져올 수 있게 만듭니다.
다음과 같은 프로젝트 구조의 경우:
repo/ |--app.py |--settings.py |--models.py |--tests/ |--test_app.py
간단히 빈 conftest.py 파일을 repo/ 디렉터리.
최신 버전의 pytest(7 이상)의 경우 더 편리한 솔루션은 pythonpath 설정을 활용하는 것입니다. 이를 통해 pytest 구성을 통해 sys.path를 직접 수정할 수 있습니다. pyproject.toml 또는 pytest.ini 파일에 다음을 추가하세요.
[tool.pytest.ini_options] pythonpath = ["."]
이것은 사용자 정의 코드나 sys.path 조작이 필요하지 않은 더욱 깔끔한 접근 방식입니다.
프로젝트 구조: conftest.py 파일의 위치 또는 pythonpath 구성 조정 프로젝트 구조를 기반으로 합니다. 예를 들어 일반적인 src 기반 레이아웃에서는 루트가 아닌 src 디렉터리에 conftest.py를 배치합니다.
src 레이아웃: PYTHONPATH에 src를 추가할 때는 주의하세요. 설치된 패키지가 아닌 저장소 코드를 테스트하게 되므로 src 레이아웃 사용의 이점이 약화될 수 있습니다.
위 내용은 경로 문제로 인한 pytest의 'ImportError: No module names...' 문제를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!