나는 이것이 간단하다고 확신하지만, 너무 오랫동안 그것을 꼼짝 않고 바라 보았습니다. 모든 팁/힌트/제안/솔루션 감사!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/
를 놓친 거지 무엇을?
는 일 : sys.path.append (os.path.abspath (os.path.dirname (os.path.dirname (test_path)))) – reallife
귀하의 초기를 'os.getcwd()'가 실행중인 디렉토리 - myapp의 부모 디렉토리이기 때문에 시도가 작동하지 않았다. 'os.path.dirname (__ file __)'을 사용하여 경로를 앱으로 인코딩해야하는 필요성을 피할 수 있습니다. –