>백엔드 개발 >파이썬 튜토리얼 >Pytest에서 'ImportError: No module names...' 오류를 어떻게 수정합니까?

Pytest에서 'ImportError: No module names...' 오류를 어떻게 수정합니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-04 13:29:11760검색
How Do I Fix 이 문제를 해결하려면 다음 접근 방식을 권장합니다.

1. 'pythonpath' 구성(Pytest >= 7)

Pytest는 'pythonpath' 구성 설정을 통해 sys.path 수정을 가능하게 하는 핵심 플러그인을 도입했습니다. 이 단순화된 솔루션에는 프로젝트의 pyproject.toml 또는 pytest.ini 파일에 다음 줄을 추가하는 작업이 포함됩니다.
repo/
   |--app.py
   |--settings.py
   |--models.py
   |--tests/
          |--test_app.py

루트 디렉터리에 상대적인 경로 항목을 지정하면 해당 디렉터리를 sys.path에 효과적으로 추가할 수 있습니다. 가져오기 문제를 해결합니다.

2. 'conftest' 솔루션 구현(Pytest < 7)

이전 버전의 pytest의 경우 덜 침해적인 접근 방식은 프로젝트의 루트 디렉터리에 'conftest.py'라는 빈 파일을 만드는 것입니다.
# pyproject.toml
[tool.pytest.ini_options]
pythonpath = [
  "."
]

# pytest.ini
[pytest]
pythonpath = .

이렇게 하면 pytest는 자동으로 'conftest.py'의 상위 디렉터리를 sys.path에 추가합니다. 성공적인 가져오기를 가능하게 합니다.

설명:

Pytest는 테스트 수집 중에 'conftest' 모듈을 검색하여 사용자 정의 후크 및 고정 장치를 수집합니다. 이러한 사용자 정의 개체를 가져오기 위해 pytest는 'conftest.py'의 상위 디렉터리를 sys.path에 추가합니다.
$ touch repo/conftest.py

결론:

권장되는 해결 방법 pytest의 가져오기 문제는 사용 중인 버전에 따라 다릅니다. pytest >= 7의 경우 'pythonpath' 구성이 선호되는 반면, pytest < 7, '컨테스트' 솔루션은 여전히 ​​유효합니다.

위 내용은 Pytest에서 'ImportError: No module names...' 오류를 어떻게 수정합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.