2012-07-12 3 views
7

이 사이트를 위에서 아래로 검색했지만 Python3x에서 원하는 것을 실제로 달성하는 단일 방법을 찾지 못했습니다. 이것은 간단한 장난감 응용 프로그램입니다 그래서 나는 몇 가지 간단한 테스트 케이스를 주장에 쓸 수 있다고 생각하고 하루를 부릅니다. 그것은 보고서를 생성하고 그래서 나는 내 코드가 변경시에 어떤 것도하지 않는지 확인하고 싶습니다.간략한 테스트를 위해 상위 디렉토리 가져 오기

내 현재 디렉토리 구조는 다음과 같습니다

project 
    -model 
    __init__.py 
    my_file.py 
    -test 
     my_file_test.py 

내가 my_file.py를 가져올 my_file_test.py을 얻는 시간의 지옥을 데 (에만 관련 부품 포함).

내가 말했듯이. 이 사이트를 위에서 아래로 검색했지만 해결 방법이 없습니다.

: 나는의 효과에 오류가 거의 모든 시도에서 https://stackoverflow.com/questions/5078590/dynamic-imports-relative-imports-in-python-3 Importing modules from parent folder Can anyone explain python's relative imports? How to accomplish relative import in python

: 파이썬의 나의 버전은

페도라 17 일 이전에 시도 시도를 실행 3.2.3입니다 ImportError : * 모듈이 없습니다. 또는 ValueError : 비 패키지에서 상대 가져 오기를 시도했습니다.

여기에 무슨 일이 일어나고 있습니다. 나는 interwebs 전체뿐만 아니라 SO에 모든 받아 들여진 응답을 시도했다. 그다지 환상적이지는 않지만 .NET/Java/Ruby 프로그래머로서 이것은 직관력의 절대적인 정의임이 입증됩니다.

편집 : 내가 내가 REPL에서 가져 오기 위해 노력하고있는 클래스를로드하려고 문제 나는 다음과 같은 얻을 경우 그것은 중요한 경우

>>> import datafileclass 
>>> datafileclass.methods 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
>>> x = datafileclass('sample_data/sample_input.csv') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: 'module' object is not callable 

... 나는 클래스 작품의 기능을 알고 하지만 지금은 테스트 할 수없는 수입품을 가져올 수 없습니다. 미래에는 확실히 통합 문제가 발생할 것입니다. (무고한 사람을 보호하기 위해 이름이 바뀌 었습니다.) 라이브러리의 반복을 위해 원하는 기능을 몇 주 내에 익숙해졌습니다. 어떤 도움이 유용 할 수 있습니다. 루비에서 일을하지만, 클라이언트는이 같은

답변

6

구조 코드, 학습 경험으로 파이썬을 원하는 것 : 또한 모듈 디렉토리를해야합니다 당신의 tests 디렉토리 (빈 __init__.py을 가지고, 중요한

project 
    -model 
    __init__.py 
    my_file.py 
    -tests 
    __init__.py 
    test_my_file.py 

파일).

그런 다음 test_my_file.py에서 from model import my_file을 사용하고 최상위 디렉토리에서 python -m tests.test_my_file을 실행합니다. 이 모듈은 test_my_file을 모듈로 호출하여 파이썬이 최상위 레벨을 포함하도록 가져 오기 경로를 설정합니다.

pytest 또는 nose를 사용하고 py.test을 실행하면 테스트가 자동으로 수행됩니다.

나는 이것이 당신의 질문에 대답하지 않는다는 것을 알고 있지만, 파이썬 표준을 따르기보다는 그것으로 작업하는 것이 훨씬 쉽다. 즉, 자신의 최상위 디렉토리에있는 테스트로 프로젝트를 구성하는 것입니다.

+0

감사합니다. 나는 그것을 오늘 저녁에 시험 할 것이다.그것은 원래의 구조와 비슷하지만 이런 식으로 구조화해야한다고 말한 일부 리소스를 발견했습니다. 내가 일을 끝내면 어떻게 작동하는지 알려 드리겠습니다. – Rig

+1

이로 인해 1 행 (import 문)에서 "ImportError : 모델 이름이없는 모듈"오류가 발생합니다. 이 그림은 무엇인가. – Rig

+0

수업 중에 가져올 수 있도록 명시 적으로 주석을 달아야합니까? 파이썬에 정통한 것은 아니며, 심지어 사용하기 시작한 지 오래되었습니다. (당시에는 수업을 통해서만 가능했습니다.) – Rig

관련 문제