2011-09-16 3 views
0

나는 이것이 간단하다고 확신하지만, 너무 오랫동안 그것을 꼼짝 않고 바라 보았습니다. 모든 팁/힌트/제안/솔루션 감사!unittest에 대한 앱 엔진 앱 상위 디렉토리 가져 오기

내 앱 엔진 앱에 unittests를 추가하려고합니다. http://code.google.com/appengine/docs/python/tools/localunittesting.html의 testrunner.py 예제 (페이지 하단)를 사용하고 있습니다. 이 작업은 apptool (myapp)의 루트에 unittest 파일 ('test_lib.py'라는 이름)을 넣으면 작동하지만 응용 프로그램 내에서 'tests'라는 별개의 하위 디렉토리로 테스트를 이동하려고합니다. 이제는 앱에서 일부 모듈을 가져와야하지만, 이제 unittest 파일의 작업 디렉토리가 한 단계 더 깊어 졌으므로 앱 엔진 앱의 실제 모듈을 볼 수 없습니다.

나는 시험에 __의 init__.py를 추가하는 시도하고 그 다음 코드를 추가 :

import os 
    import sys 

    sys.path.append(os.path.dirname(os.getcwd())) 

나는이 현재 작업 디렉토리를 찾아 한 단계 위로 이동하고이를 추가 할 희망을 sys.path 그리고 unittest 파일 ('test_lib.py')에서 'util.lib'을 가져올 수 있습니다. 그러나 내가 testrunner.py를 실행할 때 여전히 "ImportError : No module util.lib"-> "root"myapp 내에서 util이라는 서브 디렉토리 내에서 lib라는 모듈을 가져 오려고합니다.

testrunner.py 
    |- myapp 
      |- __init__.py 
      |- util 
        |- __init__.py 
        |- lib.py 
      |- tests 
        |- __init__.py ## this file has the import mentioned above. 
        |- test_lib.py 

나는 또한의 TestRunner에 응용 프로그램의 루트의 수입을 추가하는 시도하지만이 같은 오류를 반환 다음과 같이 내 디렉토리 구조입니다.

def main(sdk_path, test_path): 
     sys.path.append(os.path.dirname(test_path)) ## This line I added to the testrunner. 
     sys.path.insert(0, sdk_path) 
     import dev_appserver 
     dev_appserver.fix_sys_path() 
     suite = unittest2.loader.TestLoader().discover(test_path) 
     unittest2.TextTestRunner(verbosity=2).run(suite) 

그리고 난 다음 명령을 사용하여 테스트 호출 오전 : 여기

어떤 제안
./testrunner.py ~/sdk/google_appengine/ myapp/tests/ 

를 놓친 거지 무엇을?

+0

는 일 : sys.path.append (os.path.abspath (os.path.dirname (os.path.dirname (test_path)))) – reallife

+0

귀하의 초기를 'os.getcwd()'가 실행중인 디렉토리 - myapp의 부모 디렉토리이기 때문에 시도가 작동하지 않았다. 'os.path.dirname (__ file __)'을 사용하여 경로를 앱으로 인코딩해야하는 필요성을 피할 수 있습니다. –

답변

2

절대 경로를 사용해 보셨습니까? testrunner.py 주요 기능이 추가

sys.path.append(os.path.abspath(os.path.dirname(test_path))) 
+0

불행히도 그 중 하나가 작동하지 않았지만 당신은 testrunner.py 라인에 대한 좋은 지적을 제기하고 있습니다. 감사하지만 함께 생각해 :) – reallife

+0

그러나, 이것을 testrunner.py 코드에 추가하면 효과가 있습니다 !! sys.path.append (os.path.abspath (os.path.dirname (os.path.dirname (test_path))))) 고마워요 !! – reallife