Python Nose 가져오기 오류
파일 구조에서 테스트 스크립트 아래의 모듈을 인식하는 코 테스트 프레임워크를 사용할 수 없습니다.저는 문제를 보여주는 가장 간단한 예를 제시했습니다.아래에서 설명하겠습니다.
패키지 파일 구조는 다음과 같습니다.
./__init__.py
./foo.py
./tests
./__init__.py
./test_foo.py
foo.py 에는 다음이 포함됩니다.
def dumb_true():
return True
tests/test_foo.py에는 다음이 포함됩니다.
import foo
def test_foo():
assert foo.dumb_true()
두 init.py 파일이 모두 비어 있습니다.
가 가내뛰면을 하면,nosetests -vv
메인 디렉토리(foo.py 가 있는 곳)에서 다음과 같은 정보를 얻을 수 있습니다.
Failure: ImportError (No module named foo) ... ERROR
======================================================================
ERROR: Failure: ImportError (No module named foo)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/lib/python/site-packages/nose-0.11.1-py2.6.egg/nose/loader.py", line 379, in loadTestsFromName
addr.filename, addr.module)
File "/usr/lib/python/site-packages/nose-0.11.1-py2.6.egg/nose/importer.py", line 39, in importFromPath
return self.importFromDir(dir_path, fqname)
File "/usr/lib/python/site-packages/nose-0.11.1-py2.6.egg/nose/importer.py", line 86, in importFromDir
mod = load_module(part_fqname, fh, filename, desc)
File "/home/user/nose_testing/tests/test_foo.py", line 1, in <module>
import foo
ImportError: No module named foo
----------------------------------------------------------------------
Ran 1 test in 0.002s
FAILED (errors=1)
tests/directory 내부에서 실행할 때 동일한 오류가 발생합니다.제가 찾은 문서와 예에 따르면, nose는 모든 부모 패키지를 경로에 추가하고 호출된 디렉토리도 추가해야 하지만, 제 경우에는 이런 일이 일어나지 않는 것 같습니다.
Ubuntu 8.04를 Python 2.6.2로 실행하고 있습니다.중요한 경우 수동으로 nose를 구축하고 설치했습니다(setup_tools가 아닌).
당신은 있습니다.__init__.py
사용자의 최상위 디렉터리에 있습니다.그것은 포장이 됩니다.하면, 당신의 을제면하거, 의당신.nosetests
작동해야 합니다.
제거하지 않으면 파일을 변경해야 합니다.import
import dir.foo
서, 디에어dir
디렉토리의 이름입니다.
가상 환경에 있습니까?저 같은 경우에는.nosetests
것던것에 있던 것./usr/bin/nosetests
은 고있던하용을 사용하고 ./usr/bin/python
가상 환경의 패키지는 시스템 경로에 없습니다.다음은 이 문제를 해결했습니다.
source myvirtualenv/activate
pip install nose
which nosetests
/home/me/myvirtualenv/bin/nosetests
이 께: " 나중이질 찾으는시분들께을다문면: " 만제이질가있않다지지문을받, "오가기오류를습니져저는고에"가합니다.__init__.py
내 테스트 디렉토리에 있는 파일.
제 디렉토리 구조는 다음과 같았습니다.
./tests/
./test_some_random_stuff.py
테스트를 실행하지 않은 경우:
nosetests -w tests
그것은 그것을 줄 것입니다.ImportError
모든 사람들이 보고 있는 것.공백을 추가하는 경우__init__.py
파일 그것은 잘 작동합니다.
./tests/
./__init__.py
./test_some_random_stuff.py
또 다른 잠재적인 문제는 디렉터리 트리의 하이픈/대시입니다.에 noseImportError에서 디렉토리 이름을 했습니다.sub-dir
sub_dir
.
물론 가져올 모듈에 구문 오류가 있으면 이 문제가 발생합니다.저는 module/tests.bak.py 과 같은 경로를 가진 테스트 파일을 tests.py 과 같은 디렉토리에 백업했을 때 문제가 대두되었습니다.또한 Django 앱의 init 패키지/모듈 문제를 해결하기 위해 다음을 실행하여 init.pyc 파일이 없는지 확인할 수 있습니다.
find . -name '*.pyc' -delete
다음 오류 메시지가 표시되었습니다.nosetests
잘못된 디렉터리에서 명령을 실행합니다.
바보같지만, 가끔은.
방금 이 문제를 일으킬 수 있는 한 가지를 더 발견했습니다. 바로 양식에 있는 테스트 이름입니다.testname.test.py
그 여분의.
코를 혼란스럽게 해서는 안 되는 것들을 수입하게 됩니다.저는 전통적이지 않은 시험 명명 규칙을 사용하는 것이 상황을 깨뜨릴 것이라는 것이 명백할 수도 있다고 생각하지만, 저는 그것이 주목할 가치가 있다고 생각했습니다.
예를 들어 다음 디렉터리 구조를 사용하여 를 실행할 경우nosetests
에m1
,m2
또는m3
일부 기능을 테스트하기 위해n.py
사용해야 합니다.from m2.m3 import n
에test.py
.
m1
└── m2
├── __init__.py
└── m3
├── __init__.py
├── n.py
└── test
└── test.py
질문을 완료하기 위해:이러한 구조로 인해 어려움을 겪고 있는 경우:
project
├── m1
├ ├── __init__.py
├ ├── foo1.py
├ └──m2
├ ├── __init__.py
├ └── foo2.py
├
└── test
├── __init__.py
└── test.py
프로젝트 외부 경로에서 테스트를 실행하고 PYONPATH 내부에 프로젝트 경로를 포함할 수도 있습니다.
export PYTHONPATH=$PYTHONPATH:$HOME/path/to/project
.profile 안에 붙여넣습니다.가상 환경에 있는 경우 venv 루트의 활성화 내부에 붙여넣습니다.
언급URL : https://stackoverflow.com/questions/3073259/python-nose-import-error
'programing' 카테고리의 다른 글
자바스크립트 이벤트 수신기를 제거하려면 어떻게 해야 합니까? (0) | 2023.07.28 |
---|---|
matplotlib(파이톤)에서 글꼴을 변경하는 방법은 무엇입니까? (0) | 2023.07.28 |
CrudRepository를 확장하는 Spring Boot (0) | 2023.07.28 |
각진 소재에서 스타일링 매트 선택 (0) | 2023.07.28 |
MySQL: 임의 항목 선택, 그러나 특정 항목에 대한 가중치 (0) | 2023.07.28 |