본문 바로가기
테스트주도개발

unittest- pytest 실행시 import 경로가 올바름에도 ModuleNotFoundError가 날 때

by 오엔_ 2019. 12. 30.

Problem

App
--__init__.py
--app_file.py
--tests_folder
  --test_app_file.py

이런 폴더 구조이고

 

# test_get_s3_url.py

from get_s3_url import LatestURL

이렇게 import할 패키지의 경로를 지정하고 unittest를 하기 위해 pytest를 입력했는데

 

ImportError while importing test module '/Users/yeinlee/odk/transcoder/variety/tests/test_get_s3_url.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
tests/test_get_s3_url.py:8: in <module>
    from get_s3_url import LatestURL
E   ModuleNotFoundError: No module named 'get_s3_url'

get_s3_url을 찾지 못해서 ModuleNotFoundError가 발생했다.

 

 

Solution

https://stackoverflow.com/questions/20985157/py-test-no-module-named

 

Py.test No module named *

I have a folder structure like this App --App --app.py --Docs --Tests --test_app.py In my test_app.py file, I have a line to import my app module. When I run py.test on the root folder...

stackoverflow.com

여길 참고해서 tests폴더 안에 __init__.py 빈 파일을 추가했더니 테스트를 pass할 수 있었다.

변경 후 폴더구조:

App
--app_folder
  --app_file.py
--tests_folder
  --__init__.py
  --test_app_file.py

 

Thinking

tests폴더 안에 __init__.py를 생성해야 __init__.py파일을 기준으로 import한 parent package(여기서는 get_s3_url)의 상대경로를 찾을 수 있는 것 같다.

 

 

댓글