2014-06-13 5 views
2

패키지와 테스트 패키지가 있습니다. Where do the Python unit tests go?의 조언에 따르면 테스트는 다른 디렉토리에 있어야합니다. 프로젝트의 디렉토리 트리는 다음과 같습니다__init__.py에서 unittest 패키지로 가져 오기

project\ 
    kernel\ 
     __init__.py 
     file1.py 
     file2.py 
    tests\ 
     __init__.py 
     test1.py 
     test2.py 
     test3.py 

file1.pyfile2.py이 테스트되고있는 곳이기 때문에 내가의 tests 패키지에 kernel 패키지를 가져올 것입니다. 또한 각 테스트에서 kernel을 다시 가져 오는 대신 __init__.pyimport 문을 사용하고 싶습니다. 제가없는 성공, tests 및 (별도로 함께 하) test2.py, test2.py에 추가하여 __init__.py 파일 다음 시도 (제 더 해를 끼치 지 않는다 번째 구문 오류를 범)

import kernel 
import ../kernel 

I '는 m python2.6을 사용합니다. 명령 줄에서 위의 모든 일이 발생합니다. Eclipse PyDev를 사용하면 모든 것이 마술처럼 작동합니다.

답변

2

사용중인 상대 가져 오기는 "프로젝트"디렉토리가 파이썬 패키지 (즉, __init__.py 파일이 있음)에서만 작동합니다. 먼저 시도해보고 효과가 있는지 확인하십시오.

kernel 디렉토리가 배포되는 "패키지"로 작동하는 경우 tests 디렉토리를 넣고 그런 식으로 상대 가져 오기를 수행 할 수 있습니다.

project/ 
    kernel/ 
     __init__.py 
     file1.py 
     file2.py 
     tests/ 
      __init__.py 
      test1.py ... 

을 그리고 당신은 테스트 디렉토리 중 하나와 같은에서 커널 모듈을 가져올 것 : 그래서 같을 것이다

from kernel import file1 # if it's installed in the python path/environment 

또는 :

from .. import file1 
# 'import ..file1' might work, but I'm not sure that's syntactically correct 
관련 문제