programing

Py.test 이름이 *인 모듈이 없습니다.

linuxpc 2023. 8. 14. 22:32
반응형

Py.test 이름이 *인 모듈이 없습니다.

나는 이런 폴더 구조를 가지고 있습니다.

App
--App
  --app.py       
--Docs
--Tests
  --test_app.py

내 안에서test_app.py file앱 모듈을 가져올 라인이 있습니다.루트 폴더에서 py.test를 실행하면 app이라는 모듈이 없다는 오류가 발생합니다.어떻게 구성해야 합니까?

하여 Python 3을 했습니다.__init__의 파로에 .tests모듈.

$ touch tests/__init__.py

저는, 이 도움이 합니다.pytest가 되는 App모듈이 위치합니다.

나는 이미 가지고 있었습니다.__init__.py에 파일을 합니다./App/App디렉터리에서 경로 망킹 마법 없이 프로젝트 루트에서 테스트를 실행하려고 했습니다.

 python -m pytest tests

출력은 바로 다음과 같습니다.

➟  python -m pytest tests
====================================== test session starts ======================================
platform linux -- Python 3.5.1, pytest-2.9.0, py-1.4.31, pluggy-0.3.1
rootdir: /home/andrew/code/app, inifile: 
plugins: teamcity-messages-1.17
collected 46 items 

... lines omitted ...

============================= 44 passed, 2 skipped in 1.61 seconds ==============================

▁i▁▁to▁and▁had▁had▁problem▁similar비▁a를 삭제해야 했습니다.__init__.py에서 처터끝까를 합니다.__init__.py에▁tests폴더를 누릅니다.

그래서 당신은 달리고 있습니다.py.test/App입니까?/App/App당신 안에 있습니다.$PYTHONPATH?

그렇지 않은 경우, 다음을 시도하는 코드import app이러한 메시지와 함께 실패합니다.

EDIT0: 완전성을 위해 아래 제 의견의 정보를 포함합니다.

는 앱가기시앱이내부실성다경니공합우 안에서 합니다./App/App여기서는 그렇지 않습니다.당신은 아마도 만들기를 원할 것입니다./App/App장포를 넣은 __init__.py에서, 를 앱의 하세요.from App import app.

EDIT1: 요청에 따라 아래의 두 번째 의견에서 추가 설명을 추가합니다.

를 .__init__.py東京의 /App/App해당 디렉토리가 패키지가 됩니다.즉, 디렉토리가 다음에 표시되는 한 해당 디렉토리에서 가져올 수 있습니다.$PYTHONPATH즉, 당신은 할 수 있습니다.App import app한다면/App에 있습니다.$PYTHONPATH으로 현재작디가추가다니됩로에 됩니다.$PYTHONPATH 그서스크실때행할를트립래▁from때에서 스크립트를 때./App가져오기가 작동합니다.

중입니다.pytestpython -m pytest명령은 이 정확한 것에 도움이 됩니다.

귀하의 에 포함되지 않았기 때문입니다.$PYTHONPATH또는sys.pathpytest는 이 오류를 받습니다.

을 사용하여python -m pytest으로 작업디를자에추다니합가로에 합니다.sys.path달기의용리를 pytest문서에는 다음과 같은 내용도 나와 있습니다.

" " " 를 하는 것과 거의 .pytest

아래에 위치한 내 앱에 대한 테스트 케이스를 실행하는 동안에도 동일한 오류가 발생했습니다.

myproject
  --app1
    --__init.py__
    --test.py
  --app2
    --__init.py__
    --test.py
  --__init.py__

테스트 사례를 실행하기 위해 프로젝트 init.py 파일을 삭제했습니다.

TL;DR

빈을추는것좋다니습이하가항을 추가하는 이 좋습니다.conftest.py루트 앱 폴더에 파일을 저장합니다.

질문 폴더 구조를 보면 "테스트" 폴더의 내부가 아니라 "테스트" 폴더와 동일한 수준입니다.

추가 정보:

파이테스트는 다음을 찾습니다.conftest.py모든 프로젝트 폴더 안에 있는 파일입니다.

conftest.py는 파일 트리 pytest에서 찾은 파일 트리에 대한 구성을 제공합니다.pytest는 conftest.py 폴더에서 시작하는 모든 하위 디렉터리를 검색하기 때문에 conftest.py 파일이 앱 루트 폴더에 있는 한 테스트 폴더 외부에서 패키지/디렉토리를 찾아야 합니다.

결국, 중복 코드를 방지하기 위해 빈 conftest.py 에 코드를 작성해야 할 수도 있습니다. 특히 여러 테스트 파일 간에 고정 장치를 공유해야 할 수도 있습니다.결국, 시험을 작성할 때는 DRY 원칙(반복하지 말 것)도 따라야 합니다.

추가 중__init.py__또한 테스트 폴더로 이동하면 응용 프로그램 전체에서 모듈을 찾을 수 있습니다.그러나 Python 3.3+는 암시적 네임스페이스 패키지를 가지고 있기 때문에 패키지를 만들 수 있습니다.__init__.pyfile. 일니다입을 만드는 것. 아까 말씀드렸듯이, 생성.__init__.py이러한 특정 목적을 위한 파일은 파이썬 요구 사항이라기보다는 파이썬에 대한 해결책처럼 보입니다.자세한 내용은 다음과 같습니다.Python 3.3+의 패키지에는 __init_.py가 필요하지 않습니다.

저도 비슷한 문제가 생겼어요. 가상 설치 및 Pytest 추가/ 등 에는 "Pytest"를 추가/제거합니다.__init__.py패키지에서 파일을 가져왔는데, 아무 것도 나에게 먹히지 않았습니다.

효과적인 솔루션은 다음과 같습니다(Windows 솔루션).Python 경로에 프로젝트 폴더(패키지 폴더가 아님)를 추가했습니다(PYONPATH=%PYthonPATH%;%CD% 설정).

프로젝트 폴더에서 스크립트를 실행하고 붐을 일으켰습니다. 효과가 있었습니다.

제게 효과가 있었던 것: 테스트 파일에 절대적인 가져오기를 수행하고 전화를 걸어야 했습니다.python -m test루트 폴더에 있습니다.

저도 같은 문제에 부딪혔어요.

my-app
--conf
--my-app
--tests

설정합니다.__init__.py 을 추가했습니다. 추가했습니다.conftest.py)pytest.fixtures. 을 제 파일 ( . 이 내 을 Poetry 파추니다습했가일에것()에pyproject.toml:

[tool.pytest.ini_options]
pythonpath = [
  "."

내가 하이픈을 사용한 것이지 밑줄을 사용한 것이 아닙니다!

# pytest can't find Module
--my-app

# works
--my_app

저는 다음과 같은 프로젝트 구조를 가지고 있습니다.

myproject
      manage.py
      pyproject.toml
      --apps
        --app1
        --app2
      --tests
        --apps
          -- app1
          -- app2
      --config
         --settings
            base.py
            local.py

init.py 을 추가하는 것은 도움이 되지 않았습니다.저는 다음과 같은 typroject.toml을 추가하여 문제를 해결할 수 있었습니다.

[tool.pytest.ini_options]
DJANGO_SETTINGS_MODULE = "config.settings.local" 

솔루션은 매우 간단합니다. PYONPATH 환경 변수를 (현재 디렉터리)로 설정하십시오.

# Windows
set PYTHONPATH=.

# Linux 
export PYTHONPATH=.

사용자에게 다음이 없는지 확인합니다.__init__(self)테스트 케이스에 있는 방법입니다.

에게 효과가 : 앱으로 , 이은저에효있: 부앱로갔고으다니모,pip install -e .(로컬 및 편집 가능한 앱 설치).

언급URL : https://stackoverflow.com/questions/20985157/py-test-no-module-named

반응형