2010-03-29 5 views
1

파이썬 패키지 및 테스트와 관련된 문제가 있습니다. wx python을 사용하는 응용 프로그램을 작성 중이며 gui 파트에 대한 다음 기본 폴더/패키지 구조가 있습니다.파이썬 및 GUI 테스트의 내부 패키지 참조

import guiapp.utilviews.logpane 

폴더/패키지 레이아웃 :

mainapp 
    - main.py 
    guiapp 
     - __init__.py 
     utilviews 
      - __init__.py 
      - logpane.py 
      - other stuff... 
     mainview 
      - __init__.py 
      - mainframe.py 
      - other stuff here... 
     other views... 
mainframe.py 창 용이 mainframe.py 절대적인 가져 오기를 사용하는 logpane.py 패널에 대한 의존성을 갖는다

그러나 응용 프로그램의 gui 부분에 대해서는 단위 테스트 외에 문제가 없는데 각 뷰에 대해 작은 "테스트"/ 예제가 필요합니다. 즉, logpane, 나는 그 레이아웃을 테스트보기를 보여주는 베어 뼈 응용 프로그램을 미사일합니다 작은 실행 가능한 예제를 가지고 싶습니다되어 확인 등이다 내가 시작하는 방법은 내가

if __name__ == "__main__": 
    # create some small window and a wx app 
    # instanciate the panel and launch the app 
    pass 
있다고했다

은 패널/뷰 자체의 실제 구현 파일에 있습니다. 이것은 로그 판에 대한 경이로움을 나타냈다. 나는 파일을 독립 실행 형으로 실행하여보기를보고 함께 보관할 수 있습니다.

그러나 전략은 logpane.py에 의존 이후 mainframe.py에 대한 고장 물론

확인할 수 없습니다. 이것은 현재 메인 모듈 이기 때문에 mainframe.py가 mainview.py가 utilviews 패키지에 도달 할 수있는 유일한 방법은 메인/실행 모듈이 트리에있을 때입니다.

이러한 유형의 테스트는 어떻게 구성합니까? 단위 테스트의 경우 코를 사용합니다. 좋은데, 코가 mainapp 폴더마다 실행되기 때문에 문제가 발생합니다 (모든 intrapackage 참조가 작동합니다). 그러나 이러한 테스트는 소형 독립 실행 형 프로그램과 같습니다. 나는 단순히 이러한 파이썬 파일들로 mainapp 폴더를 어지럽히 지 못한다 (많은 파일들이있을 것이다). 이 일을 성취 할 수있는 다른 방법이 있습니까?

모든 입력 값은 중요합니다.

감사합니다, 리 카드

답변

2

당신은 PYTHONPATH을 사용할 수 있습니다. 테스트 파일을 실행하기 전에 기본 프로젝트 디렉토리로 설정하십시오. 그런 다음 해당 디렉토리에서 실행중인 것처럼 모든 가져 오기를 해결할 수 있습니다.

$ find 
. 
./test 
./test/test.py 
./some 
./some/__init__.py 

$ cat some/__init__.py 
x = 10 

$ cat test/test.py 
import some 
print some.x 

$ cd test 
$ export PYTHONPATH=.. 
$ python test.py 
10 
+1

감사합니다. 이것은 해결책입니다. 그것은 다른 개발자가 SVN에서 프로젝트를 체크 아웃 한 다음 테스트를 실행할 수 있기를 원하기 때문에 약간의 번거 로움을 추가합니다. 어쩌면 나는 CWD에서 위쪽으로 traves하고 mainapp 폴더에 도달 할 때 sys.path를 통해 경로를 programmatically()에 추가하는 if __name__ == "__main__"절에 논리를 추가 할 수 있습니다. 그렇게하면 작업 복사본을 어디서나 가질 수 있습니다. 나는 그것을 시도 할 것이다! 감사! – Rickard

+0

예,'sys.path'도 수정 합니다만, 나는 꽤 해킹 된 것으로 생각합니다. 테스트를'test /'디렉토리에 결합하면 테스트 실행을위한 작은 쉘 스크립트를 제공 할 수 있습니다. 그러면 이전에'PYTHONPATH'가 설정됩니다. – Frank