2017-02-27 1 views
0

그래서 폴더 구조가 있습니다.ImportError : 모듈이 없습니다. app - 단위 테스트를 실행하려고합니다.

└── myApp 
    ├── app 
    │   ├── __init__.py 
    │   ├── core 
    │   ├── db.py 
    │   ├── schema.sql 
    │   ├── static 
    │   │   ├── fonts 
    │   │   ├── images 
    │   │   ├── js 
    │   │   └── resources 
    │   ├── templates 
    │   ├── tests 
    │   │   └── tests.py 
    │   ├── utils.py 
    │   ├── views.py 
    │   ├── con.py 
    ├── config.py 
    ├── manifest.json 
    ├── run.py 
    ├── deps 
    ├── store 

my tests.py는 app/tests 폴더에 있습니다.

app = Flask(__name__)초기화 내 평을 선언하지만 난 내 테스트를 (내가 지금처럼을 myApp 디렉토리에서 수행 파이썬 응용 프로그램/테스트/tests.py) 내 폴더를 실행하려고 할 때마다 나는 ImportError: No module named app를 얻을.

이 정보가 관련이 있는지는 잘 모르겠지만, 보통 run.py를 실행합니다.이 내부에는 app.run(debug = True, host='0.0.0.0')이 있습니다.

감사합니다.

tests.py :

import os 
import unittest 
from app import app 

class TestCase(unittest.TestCase): 

    def setUp(self): 
     self.db_fd, app.config['DATABASE'] = tempfile.mkstemp() 
     self.app = app.test_client() 

    def tearDown(self): 
     os.unlink(app.config['DATABASE']) 

    def test_empty_db(self): 
     rv = self.app.get('/index') 
     assert b'No entries here so far' in rv.data 

if __name__ == "__main__": 
    unittest.main() 
+0

어디서든지 tests.py를 가져오고 싶지는 않습니다. 나는 그것을 자신의 것으로 돌리고 싶다. 편집 : 누구든지 내가 그들의 코멘트를 삭제 회신했다. –

답변

1

IT는 tests.pyapp 내부에 있기 때문에 이것이 가능합니까? 이는 그가 위의 디렉토리를보고 있지 않기 때문에 app을 찾지 못함을 의미합니다.

import os.path 
import sys 
newPath = os.path.abspath(os.path.join(os.path.dirname(__file__), os.path.pardir, os.path.pardir)) 
sys.path.append(newPath) 
from app import app 
sys.path.remove(newPath) 
del newPath 

이것은 파이썬이 가져 오기를 찾는 경로를 추가하는 매우 추악한 방법입니다. 이 예제는 2 개의 디렉토리를 위로 이동하여 myApp 디렉토리로 가져와야합니다.

이 경우 문제가 발생하면 tests 디렉토리를 myApp 폴더 나 다른 위치로 옮길 수도 있습니다. 하지만 파이썬 패키징/앱 에티켓에 대한 전문가는 아닙니다. 찾는 것을 고려해보십시오.

0

sys.path를 입력하여 모듈의 경로가 이미 설정되어 있는지 확인할 수 있습니다. 그렇지 않은 경우 설정해야합니다 (예 : 단위 테스트 파일에 다음과 같이 입력하십시오 :

import sys 
import os 
sys.path.append(os.path.join(os.path.dirname(__file__), 'app')) 
관련 문제